使用 seaborn 深色主题并删除条形图中条形之间的间隙
use seaborn dark theme and remove the gap between bars in a bar plot
我想要一个条形图之间没有间隙的条形图,所以我在 plt.bar
中使用了 width=1
,它起作用了。
# IMPORTS
import seaborn as sns
import pandas as pd
import datetime
import matplotlib.pyplot as plt
# DUMMY DATAFRAME
my_dict = {'date': {0: datetime.date(2021, 5, 18), 1: datetime.date(2021, 5, 19), 2: datetime.date(2021, 5, 20),
3: datetime.date(2021, 5, 21), 4: datetime.date(2021, 5, 22), 5: datetime.date(2021, 5, 18),
6: datetime.date(2021, 5, 19), 7: datetime.date(2021, 5, 20), 8: datetime.date(2021, 5, 21),
9: datetime.date(2021, 5, 22)},
'campaign': {0: 'A', 1: 'A', 2: 'A', 3: 'A', 4: 'A', 5: 'B', 6: 'B', 7: 'B', 8: 'B', 9: 'B'},
'metric': {0: 'cost', 1: 'cost', 2: 'cost', 3: 'cost', 4: 'cost', 5: 'cost', 6: 'cost', 7: 'cost',
8: 'cost', 9: 'cost'},
'value': {0: 2.01, 1: 2.62, 2: 1.95, 3: 2.03, 4: 2.13, 5: 38.67, 6: 45.86, 7: 42.14, 8: 37.9,
9: 34.23}}
df = pd.DataFrame(my_dict)
# FACETGRID PLOT
g = sns.FacetGrid(df, col='campaign', hue='metric',
col_wrap=2, palette = ['goldenrod','steelblue'],height=5)
g = g.map(plt.bar, 'date', 'value',alpha = 0.6, width=1)
for ax in g.axes.ravel():
ax.set_xticklabels(ax.get_xticklabels(), rotation=90)
plt.show()
但我也想要深色背景,所以我在使用 FaceGrid 之前添加了 sns.set_theme(style="dark")
。现在,间隙,条形之间的白色边缘线,又回来了。
我可以消除差距并仍然使用深色主题吗?
您可以使用 set_style
并覆盖 patch.edgecolor
(参见 overriding elements of the seaborn styles)。
sns.set_style('dark', {"patch.edgecolor": 'None'})
输出:
编辑:
或与 set_theme
类似:
sns.set_theme(style='dark', rc={"patch.edgecolor": 'None'})
我想要一个条形图之间没有间隙的条形图,所以我在 plt.bar
中使用了 width=1
,它起作用了。
# IMPORTS
import seaborn as sns
import pandas as pd
import datetime
import matplotlib.pyplot as plt
# DUMMY DATAFRAME
my_dict = {'date': {0: datetime.date(2021, 5, 18), 1: datetime.date(2021, 5, 19), 2: datetime.date(2021, 5, 20),
3: datetime.date(2021, 5, 21), 4: datetime.date(2021, 5, 22), 5: datetime.date(2021, 5, 18),
6: datetime.date(2021, 5, 19), 7: datetime.date(2021, 5, 20), 8: datetime.date(2021, 5, 21),
9: datetime.date(2021, 5, 22)},
'campaign': {0: 'A', 1: 'A', 2: 'A', 3: 'A', 4: 'A', 5: 'B', 6: 'B', 7: 'B', 8: 'B', 9: 'B'},
'metric': {0: 'cost', 1: 'cost', 2: 'cost', 3: 'cost', 4: 'cost', 5: 'cost', 6: 'cost', 7: 'cost',
8: 'cost', 9: 'cost'},
'value': {0: 2.01, 1: 2.62, 2: 1.95, 3: 2.03, 4: 2.13, 5: 38.67, 6: 45.86, 7: 42.14, 8: 37.9,
9: 34.23}}
df = pd.DataFrame(my_dict)
# FACETGRID PLOT
g = sns.FacetGrid(df, col='campaign', hue='metric',
col_wrap=2, palette = ['goldenrod','steelblue'],height=5)
g = g.map(plt.bar, 'date', 'value',alpha = 0.6, width=1)
for ax in g.axes.ravel():
ax.set_xticklabels(ax.get_xticklabels(), rotation=90)
plt.show()
但我也想要深色背景,所以我在使用 FaceGrid 之前添加了 sns.set_theme(style="dark")
。现在,间隙,条形之间的白色边缘线,又回来了。
我可以消除差距并仍然使用深色主题吗?
您可以使用 set_style
并覆盖 patch.edgecolor
(参见 overriding elements of the seaborn styles)。
sns.set_style('dark', {"patch.edgecolor": 'None'})
输出:
编辑:
或与 set_theme
类似:
sns.set_theme(style='dark', rc={"patch.edgecolor": 'None'})