并排绘制多个不同大小的列表?

2024-10-02 04:30:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下4个清单:

x_name=[’01-2014’,’03-2014’,’05-2014’,’01-2015’,’03-2015’]
x_value=[3,5,1,5,7]

z_name==[’01-2014’,’03-2014’,’04-2014’,’07-2014’,’05-2014’,’01-   
        2015’,’02-2015’,’03-2015’]
z_value=[6,8,2,4,6,8,1,2]

我想并排绘制这些列表,这样如果它们在(x_namez_name中有相同的名称,那么它们对应的值(在x_valuez_value)应该并排绘制,z_name中不在x_name中的名称(例如,“04-2014”、“02-2015”等)应该在绘图中赋值为0。我对以下内容进行了编码:

bar_width = 0.75
opacity = 0.8
index = len(z_name)

fig, axs = plt.subplots()
rects0=axs.bar(z_name,  
       z_value,bar_width,alpha=opacity,color='red',label=key)

rects0=axs.bar(index + bar_width, x_value,  
       bar_width,alpha=opacity,color='g',label='true')

plt.xlabel(‘x and z names’)
plt.ylabel('x and z values')

但是,出了点问题,我不能将0值赋给那些不在x_name中的值。你知道吗


Tags: andnamealpha名称indexvalue绘制bar
1条回答
网友
1楼 · 发布于 2024-10-02 04:30:05

您需要执行以下操作:

  • 为两个条形图使用正确的x值
  • 使用align=edge模式和正负条宽度将条彼此相邻放置
  • 使用较小的钢筋宽度以避免钢筋重叠

我不知道你为什么用index = len(z_name)


import matplotlib.pyplot as plt

x_name=['01-2014','03-2014','05-2014','01-2015','03-2015']
x_value=[3,5,1,5,7]

z_name=['01-2014','03-2014','04-2014','07-2014','05-2014','01-2015','02-2015','03-2015']
z_value=[6,8,2,4,6,8,1,2]

bar_width = 0.25
opacity = 0.8
index = len(z_name)

fig, axs = plt.subplots()

rects0=axs.bar(z_name, z_value, bar_width, align='edge', alpha=opacity, color='r')
rects0=axs.bar(x_name, x_value, -bar_width, align='edge',alpha=opacity, color='g')

plt.xlabel('x and z names')
plt.ylabel('x and z values')
plt.xticks(rotation=30)

enter image description here

相关问题 更多 >

    热门问题