我在互联网上寻找,但我没有得到任何解决方案。我有这个图,我想改变第一个酒吧的颜色,如果我使用参数'颜色',它改变了所有的酒吧。
有可能做到这一点吗?
wnvonmuf1#
您可以通过ax.patches访问生成的矩形列表,然后重新着色第一个矩形:
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=可以设置精确的限值:
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()
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")
输出:
hwazgwia3#
好吧,确切的方法将取决于您使用的绘图软件。您最好的办法是将数据分为两组,一组用于第一条,另一组用于其余部分。您应该能够以自己的颜色输出每组数据。
3条答案
按热度按时间wnvonmuf1#
您可以通过
ax.patches
访问生成的矩形列表,然后重新着色第一个矩形:要获得精确的40.000分离,您可以在同一个子图上创建两个直方图。使用
binrange=
可以设置精确的限值:de90aj5v2#
用途:
输出:
hwazgwia3#
好吧,确切的方法将取决于您使用的绘图软件。您最好的办法是将数据分为两组,一组用于第一条,另一组用于其余部分。您应该能够以自己的颜色输出每组数据。