我目前使用align=’edge’
参数和pyplot.bar()
中的正/负宽度来绘制每个轴的一个指标的条形数据。但是,如果我尝试将第二组数据绘制到一个轴,它将覆盖第一组。 pyplot
是否有办法正确自动分配这些数据?
lns3 = ax[1].bar(bucket_df.index,bucket_df.original_revenue,color='c',width=-0.4,align='edge')
lns4 = ax[1].bar(bucket_df.index,bucket_df.revenue_lift,color='m',bottom=bucket_df.original_revenue,width=-0.4,align='edge')
lns5 = ax3.bar(bucket_df.index,bucket_df.perc_first_priced,color='grey',width=0.4,align='edge')
lns6 = ax3.bar(bucket_df.index,bucket_df.perc_revenue_lift,color='y',width=0.4,align='edge')
这是我展示情节时的样子:
黄色显示的数据完全覆盖灰色数据。我希望它显示在灰色数据旁边。
有没有简单的方法可以做到这一点?谢谢!
答案 0 :(得分:0)
bar()
绘图方法的第一个参数是条形图的x坐标数组。由于您传递相同的x坐标,它们将全部重叠。你可以通过做这样的事情来实现你想要的东西:
< 2015-12-22 09:47:48.893 Type: SSH_FXP_STATUS, Size: 30, Number: 5771525
. 2015-12-22 09:47:48.893 Preserving timestamp [2015-12-22T09:32:48.000Z]
. 2015-12-22 09:47:48.893 Transfer done: '/Home/Brokers Service Marketing Group/211_AI_DR.zip.pgp' [807259773]
> 2015-12-22 09:47:48.893 Script: close
. 2015-12-22 09:47:48.893 Closing connection.
. 2015-12-22 09:47:48.893 Sending special code: 12
. 2015-12-22 09:47:48.893 Sent EOF message
由于您要绘制一些数据集,因此使代码更简洁更有意义(假设x = np.arange(10) # define your x-coordinates
width = 0.1 # set a width for your plots
offset = 0.15 # define an offset to separate each set of bars
fig, ax = plt.subplots() # define your figure and axes objects
ax.bar(x, y1) # plot the first set of bars
ax.bar(x + offset, y2) # plot the second set of bars
是包含您想要绘制的y坐标的列表, y_vals
,bucket_df.original_revenue
等)。然后你的绘图代码可能如下所示:
bucket_df.revenue_lift
如果您想绘制更多条形图,可以相应地减少for i, y in enumerate(y_vals):
ax.bar(x + i * offset, y)
和width
。