matplotlib 如何更改histplot中单个条形的颜色

qzwqbdag  于 2023-10-24  发布在  其他
关注(0)|答案(3)|浏览(196)

我在互联网上寻找,但我没有得到任何解决方案。
我有这个图,我想改变第一个酒吧的颜色,如果我使用参数'颜色',它改变了所有的酒吧。

有可能做到这一点吗?

wnvonmuf

wnvonmuf1#

您可以通过ax.patches访问生成的矩形列表,然后重新着色第一个矩形:

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

df = pd.DataFrame({'Sales': 100000 * (np.random.rand(80) ** 1.5) + 18000})
ax = sns.histplot(x='Sales', data=df, bins=4, color='skyblue', alpha=1)
ax.patches[0].set_facecolor('salmon')
plt.show()

要获得精确的40.000分离,您可以在同一个子图上创建两个直方图。使用binrange=可以设置精确的限值:

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

df = pd.DataFrame({'Sales': 100000 * (np.random.rand(80) ** 1.5) + 18000})
# either choose a fixed limit, or set it exactly at one fourth
limit = 40000
# limit = df['Sales'].min() + 0.25 * (df['Sales'].max() - df['Sales'].min())
ax = sns.histplot(x='Sales', data=df[df['Sales'] <= limit],
                  bins=1, binrange=(df['Sales'].min(), limit), color='salmon')
sns.histplot(x='Sales', data=df[df['Sales'] > limit],
             bins=3, binrange=(limit, df['Sales'].max()), color='skyblue', ax=ax)
plt.show()

de90aj5v

de90aj5v2#

用途:

import seaborn as sns
s = [1,1,2,2,1,3,4]
s = pd.DataFrame({'val': s, 'col':['1' if x==1 else '0' for x in s]})
sns.histplot(data=s, x="val", hue="col")

输出:

hwazgwia

hwazgwia3#

好吧,确切的方法将取决于您使用的绘图软件。您最好的办法是将数据分为两组,一组用于第一条,另一组用于其余部分。您应该能够以自己的颜色输出每组数据。

相关问题