使用seaborn深色主题时如何消除柱状图柱体间的间隙
Seaborn深色主题下无间隙柱状图解决方案
开启style="dark"主题后柱体间出现的白色间隙,本质是seaborn深色主题默认给柱状元素添加了白色描边,并非柱体宽度设置失效。
只需要在plt.bar的参数中添加edgecolor="none"关闭描边即可,无需调整其他主题配置,完整可运行代码如下:
# IMPORTS import seaborn as sns import pandas as pd import datetime import matplotlib.pyplot as plt # 启用深色主题 sns.set_theme(style="dark") # 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) # 新增edgecolor="none"关闭描边 g = g.map(plt.bar, 'date', 'value',alpha = 0.6, width=1, edgecolor="none") for ax in g.axes.ravel(): ax.set_xticklabels(ax.get_xticklabels(), rotation=90) plt.show()
如果需要保留描边但不想出现间隙效果,也可以将edgecolor设置为和柱体填充色相同的值。
内容的提问来源于stack exchange,提问作者Julien Massardier
相关产品推荐
相关产品推荐

