gpt4 book ai didi

python - 来自 pandas dataframe python 的条形图中行的不同颜色

转载 作者:太空狗 更新时间:2023-10-30 02:42:10 29 4
gpt4 key购买 nike

我有以下 Pandas 数据框:

              a   b
bob 23 25
john 13 21
paul 20 19
david 17 14
michael 14 24
neil 22 11

df.plot(kind='barh')

我使用了 pandas plot 函数。我想制作一个条形图,其中所有行(名称)都具有不同的颜色,有没有办法做到这一点?

enter image description here我需要所有人都有不同颜色的条。

最佳答案

看来 Pandas 只支持使用 colormap属性,它将相同的映射应用于图表中的每一行,例如:

df.plot(kind='barh', colormap='RdBu')

出于您的目的,您需要直接使用 Matplotlib。

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({'a':[23, 13, 20, 17, 14, 22],
'b':[25, 21, 19, 14, 23, 11]},
index=['bob', 'john', 'paul', 'david', 'michael', 'neil'])

a_vals = df.a
b_vals = df.b
ind = np.arange(df.shape[0])
width = 0.35

# Set the colors
colors = ['b', 'g', 'r', 'c', 'm', 'y', 'g']


def autolabel(bars):
# attach some text labels
for bar in bars:
width = bar.get_width()
ax.text(width*0.95, bar.get_y() + bar.get_height()/2,
'%d' % int(width),
ha='right', va='center')

# make the plots
fig, ax = plt.subplots()
a = ax.barh(ind, a_vals, width, color = colors) # plot a vals
b = ax.barh(ind + width, b_vals, width, color = colors, alpha=0.5) # plot b vals
ax.set_yticks(ind + width) # position axis ticks
ax.set_yticklabels(df.index) # set them to the names
ax.legend((a[0], b[0]), ['a', 'b'], loc='center right')

autolabel(a)
autolabel(b)

plt.show()

请引用以下例子:

1 - matplotlib bar charts

2- changing individual colors on bar chart

enter image description here

关于python - 来自 pandas dataframe python 的条形图中行的不同颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37447056/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com