You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 02:30:02