【问题标题】:Bar graph for male and female born on particular date/time在特定日期/时间出生的男性和女性的条形图
【发布时间】:2014-05-02 23:50:49
【问题描述】:

我需要为值绘制条形图:

 male=('2', '1', '2', '6', '6', '1') # list may increase
 time=('Tue_Aug_13_04:37:40_2013', 'Mon_Jul__1_02:33:11_2013','Tue_Aug_13_04:37:40_2013', 'Thu_Jul__4_01:53:32_2013', 'Mon_Jul__1_10:05:55_2013','Mon_Jul__1_04:15:25_2013')# list may increase
female=(16, 11, 16, 12, 12, 11) # list may increase  

男绿女红如下图:

我试过的代码:

import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse, Polygon

fig = plt.figure()
ax1 = fig.add_subplot(131)
ax1.bar(male, color='red', edgecolor='black')
ax1.bar(bottom=range(female), color='blue', edgecolor='black')
ax1.set_xticks(time)
plt.show()

为了绘制条形图,我需要进行哪些修改,如我的值所附图片所示?

【问题讨论】:

  • 你想用time做什么?你的x-axis 应该是什么? this question/answer 有帮助吗?
  • 嗨 Schorsch,时间应该在 x 轴和 y 轴上,因为男性和女性都以不同的颜色计数,并在其上显示计数。

标签: python-2.7 matplotlib


【解决方案1】:

1.) 我强烈建议你熟悉一下python语法:

2.) 使用the matplotlib documentation 找出您正在使用的绘图命令的正确语法。

3.) 在这种特殊情况下:为了让您继续前进,请将您的数据更改为:

male=[2, 1, 2, 6, 6, 1] # list may increase  
time=['Tue_Aug_13_04:37:40_2013', 'Mon_Jul__1_02:33:11_2013','Tue_Aug_13_04:37:40_2013', 'Thu_Jul__4_01:53:32_2013', 'Mon_Jul__1_10:05:55_2013','Mon_Jul__1_04:15:25_2013']# list may increase  
female=[16, 11, 16, 12, 12, 11] # list may increase

请仔细检查发生了什么变化。

4.) 您尝试调用的bar 命令没有足够的输入参数。使用上面的更改数据,试试这个:

ax1.bar(range(len(time)),male,width=0.5, color='red', edgecolor='black')
ax1.bar(range(len(time)),female,width=0.5,bottom=male,color='blue', edgecolor='black')

发生了什么变化?

  • 您需要以下输入:left, height, width=0.8
  • 你只有其中之一
  • 由于您的日期是以字符串形式给出的,因此您需要一个用于x 轴的通用计数器,因此range(len(time)) 可以提供与time 中的条目一样多的抽动。
  • 现在,您根据malefemale 中的值指定height - 它们都不应该是字符串!
  • 定义一个width
  • 在您的情况下,您希望条形图堆叠 - 因此,将第一组值指定为 bottom 用于第二组

4.) 因为time 是由字符串组成的,所以不能将它用于刻度。相反,尝试:

ax1.set_xticklabels(time,rotation=90)

在这里,您使用来自time 的字符串作为刻度-标签rotation=90 是一个不错的功能,因此长字符串不会重叠。

5.) 如果标签被绘图窗口截断,试试这个:

plt.tight_layout()
plt.show()  

这应该会让您重回正轨。


网络搜索的好关键词包括:

  • matplotlib 堆积条形
  • matplotlib 刻度标签旋转
  • matplotlib 滴答日期

【讨论】:

  • 我对这个matplotlib很陌生,非常感谢你的帮助,我会通过文档...
猜你喜欢
  • 2020-03-29
  • 1970-01-01
  • 2016-09-02
  • 2013-06-11
  • 1970-01-01
  • 2017-10-08
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
相关资源
最近更新 更多