我看到了一种奇怪的行为,那就是海边的一块弹道。我正在使用一个脚本,我验证了它与一个数据帧一起工作。当我连接多个数据帧并使用groupby时,条形图显示为白色,即color_palette不再工作。
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
from matplotlib.collections import PolyCollection as p
import seaborn as sns
sns.set(font_scale=1.5, style='white', context='paper')
def plot_consumers(count, df):
print(count.groupby(['periods'], as_index=False)[
'consumerId'].mean().describe())
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(8, 3))
pal = sns.color_palette('Blues_d', n_colors=1)
sns.barplot(x='periods',
y='consumerId',
data=count.groupby(['periods'], as_index=False)[
'consumerId'].mean(),
ax=axes[0],
palette=pal)
sns.lineplot(x='periods',
y='distance',
data=df.groupby(['periods'], as_index=False)[
'distance'].mean(),
legend=False,
ax=axes[1])
# Axes config
axes[0].set(ylim=(-0.05, 100.05))
axes[0].set(ylabel='%')
axes[0].set(xlim=(-10, 310))
axes[0].xaxis.set_major_locator(ticker.MultipleLocator(100))
axes[0].xaxis.set_major_formatter(ticker.ScalarFormatter())
axes[1].set(ylabel='customer satisfaction')
axes[1].set(ylim=(-0.05, 1.05))
fig.tight_layout()
plt.show()在对count数据框进行分组后,我得到了以下内容:
periods consumerId
count 300.000000 300.000000
mean 149.500000 21.540741
std 86.746758 0.175113
min 0.000000 19.666667
25% 74.750000 21.555556
50% 149.500000 21.555556
75% 224.250000 21.555556
max 299.000000 23.111111我知道正在绘制条形图,因为我将样式更改为dark,并且我可以看到白色的条形图。
如果我将柱状图改为折线图,它也可以工作。
下面是使用barplot和dark样式的绘图:

下面是使用lineplot和white样式的绘图:

发布于 2019-07-25 05:17:24
根据@mwaskom的说法,这个问题是因为我试图在很短的空间内容纳太多的条形图。
https://stackoverflow.com/questions/57186663
复制相似问题