matplotlib Python:如何使用更改的颜色和多个子图制作分组的水平条图

34gzjxbg  于 2023-04-07  发布在  Python
关注(0)|答案(1)|浏览(135)

在Python中,我想制作一个包含三个子图的水平条形图,其中每个面板有五组四个条形,同时还可以更改条形的自动颜色。
基于下面的代码,它的灵感来自于这个guidance here,我怎么能a)改变每组中的条形图的颜色(例如,深蓝色,浅蓝色,深紫色,浅紫色),b)制作一个有三个这样的面板的图,而不仅仅是一个(例如,它可以与我通常用于几个子图fig, (ax1, ax2, ax3) = plt.subplots(1, 3)的代码相结合吗?

`speed = [40, 48, 52, 69, 88]
lifespan = [70, 1.5, 25, 12, 28]
height = [35, 5, 18, 17, 43]
width = [40, 18, 35, 37, 15]
index = ['elephant', 'rabbit', 'giraffe', 'coyote', 'horse']
df = pd.DataFrame({'speed': speed, 'lifespan': lifespan, 'height': height, 'width': width}, index=index)
ax = df.plot.barh()`

谢谢大家!

zmeyuzjn

zmeyuzjn1#

您可以使用{column_name:color_code}的dict在df.plot.barh()中定义颜色,

ax = df.plot.barh(color={"speed": "#08519c", "lifespan": "#6baed6","height":'#54278f',"width":'#bcbddc'})

或颜色列表,

ax = df.plot.barh(color=["#08519c", "#6baed6",'#54278f','#bcbddc'])

对于多个面板,将图指定给不同的轴,例如,

fig, axes = plt.subplots(1, 3)
for i in range(3):
    df_subset = ...
    axes[i] = df_subset.plot.barh(color={"speed": "#08519c", "lifespan": "#6baed6","height":'#54278f',"width":'#bcbddc'})

相关问题