我有一个堆叠条形图,显示了按性别分组的不同合并症的计数。
女性用'pink'
表示,男性用'lightskyblue'
表示。
为了更清楚地表明'None'
不仅仅是另一种合并症,我希望'None'
(患者没有合并症)使用不同的颜色来突出它:'lightcoral'
代表女性,'royalblue'
代表男性。
这是我目前使用colors = ['lightskyblue', 'pink']
的堆叠条形图:
comorbidity_counts_by_gender = df.groupby('sex_female')[comorbidity_columns].sum()
comorbidity_counts_by_gender = comorbidity_counts_by_gender[comorbidity_counts_by_gender.sum().sort_values(ascending=True).index].T
colors = ['lightskyblue', 'pink']
bars = comorbidity_counts_by_gender.plot(kind='barh', stacked=True, figsize=(8, 8), color=colors, width=0.8)
plt.title('Distribution of Comorbidities by Gender')
plt.xlabel('Count')
plt.ylabel('')
bars.legend(title='Gender', loc="upper left", bbox_to_anchor=(1, 1), frameon=False)
plt.show()
字符串
的数据
无论我怎么尝试,我似乎都无法为“无”栏提供不同的颜色对。这里有两种方法,我试图解决这个问题,但对我不起作用:
尝试1:
colors = [['royalblue', 'lightcoral'] if comorbidity == 'None' else ['lightskyblue', 'pink'] for comorbidity in comorbidity_counts_per_gender.index]
型
这将导致ValueError:Invalid color(“lightskyblue”,“pink”)
尝试2:
colors = []
for comorbidity in comorbidity_counts_by_gender.index:
if comorbidity == 'None':
colors = ['royalblue', 'lightcoral']
else:
colors = ['lightskyblue', 'pink']
型
对于任何列,它始终使用['lightskyblue','pink']。
1条答案
按热度按时间mqkwyuun1#
下面是一个直接更改相应条形图颜色的示例:
字符串
的数据
请注意,默认情况下(* 我认为 *),表示条形的
Rectangle
对象应该是get_children()
返回的列表中的第一个对象。但是,如果您向图中添加更多内容,则情况 * 可能 * 并非如此。