matplotlib 如何制作颜色变化和多个子图的分组水平条形图

q0qdq0h2  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(143)

在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()`
koaltpgm

koaltpgm1#

您可以使用{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'})

相关问题