Bar graph for male and female born on particular date/time
我需要为以下值绘制条形图:
1 2 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 |
男性为绿色,女性为红色,如下图所示:
。
我尝试的代码:
1 2 3 4 5 6 7 8 9 | 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() |
号
为了绘制条形图,我需要做些什么修改,如为我的值所附的图像所示?
1.)我强烈建议您熟悉Python语法:
- 方括号和圆括号括起来的列表有什么区别?
'2' 和2 有什么区别?
2.)使用matplotlib文档为您使用的plot命令找出正确的语法。
3.)在这种特殊情况下:要让您继续,请将数据更改为:
1 2 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.)您试图调用的
1 2 | 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)) 提供的tics与time 中的条目一样多。 - 现在,根据
male 和female 中的值指定height ,这些值都不应该是字符串! - 定义一个
width 。 - 在这种情况下,您希望将条形图堆叠起来,因此,请将第一组值指定为第二组的
bottom 。
4.)因为
1 | ax1.set_xticklabels(time,rotation=90) |
这里,您使用来自
5.)如果标签被绘图窗口切断,请尝试以下操作:
1 2 | plt.tight_layout() plt.show() |
。
这会让你回到正轨。
网页搜索的好关键词包括:
- Matplotlib堆积条形图
- Matplotlib标记标签旋转
- Matplotlib Ticks日期