python - Matplotlib 分组条形图无法正常工作
问题描述
我在 matplotlib 中玩分组条形图。我正在尝试绘制具有适当宽度和间距的分组条形图。数据包括 javascript 开发人员、python 开发人员和所有开发人员的平均工资。但我无法将它们正确分组。
from matplotlib import pyplot as plt
import numpy as np
ages_x = [18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55]
x_indexes = np.arange(len(ages_x))
width = 0.9
dev_y = [17784, 16500, 18012, 20628, 25206, 30252, 34368, 38496, 42000, 46752,
49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752, 77232, 78000,
78508, 79536, 82488, 88935, 90000, 90056, 95000, 90000, 91633, 91660,
98150, 98964, 100000, 98988, 100000, 108923, 105000, 103117]
plt.bar(x_indexes- width, dev_y, color='#444444',width = width, label='All Devs')
py_dev_y = [20046, 17100, 20000, 24744, 30500, 37732, 41247, 45372, 48876,
53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640,
84666, 84392, 78254, 85000, 87038, 91991, 100000, 94796, 97962,
93302, 99240, 102736, 112285, 100771, 104708, 108423, 101407,
112542, 122870, 120000]
plt.bar(x_indexes, py_dev_y, width = width,label='Python')
js_dev_y = [16446, 16791, 18942, 21780, 25704, 29000, 34372, 37810, 43515,
46823, 49293, 53437, 56373, 62375, 66674, 68745, 68746, 74583,
79000, 78508, 79996, 80403, 83820, 88833, 91660, 87892, 96243,
90000, 99313, 91660, 102264, 100000, 100000, 91660, 99240, 108000,
105000, 104000]
plt.bar(x_indexes+width, js_dev_y,width = width, label='JavaScript')
plt.legend()
plt.savefig('plot.png')
plt.xlabel('Ages')
plt.ylabel('Median Salary (USD)')
plt.title('Median Salary (USD) by Age')
plt.xkcd()
这就是我的图表目前的样子
这就是我想要的样子。不要专注于颜色和所有。
解决方案
为了扩展ImportanceOfBeingErnest的评论,这里是使用而不是的输出:width = 0.27
width = 0.9
另请注意,这没有plt.xkcd()
- 这并不适合该图,因为它会混淆数据并且无法正确处理条形偏移:
推荐阅读
- arrays - vue v-if 无法访问数组中的布尔值
- javascript - 加载页面时不会执行 Ionic 3 视图子滚动事件侦听器
- ruby-on-rails - 嵌套属性在 Ruby on Rails 中有一个关联
- html - 我的搜索框有什么问题?
- jquery - 如何正确地将具有不同元素的 jQuery 事件排队?
- javascript - 使用 Gmail 附加组件将文本、表单等添加到回复正文中
- javascript - 在 JavaScript 中实现触摸事件时出现问题,因此它可以在 Android 的 WebView 中工作
- php - 如何在 PHP 中通过 CURL 发布表单字段?
- java - 为什么while循环打印所有数字而for循环不打印?
- javascript - 创建与 FormData 一起使用的可读流