python - 如何使用特殊设计的 matplot lib 在 python 中绘制条形图

标签 python matplotlib

我想显示比较不同出版物的算法的条形图。

数据具有以下属性:

  1. 出版年份(这是我想要的 x 轴)
  2. 分数(这是条形高度)
  3. 数据类型(这将设置每个条形的颜色)

我无法实现这一点(尚未执行第三个要求)。

这是示例数据和代码:

import numpy as np
import matplotlib.pyplot as plt

dtypes = ['type1', 'type2', 'type3']
names = ['name1','name2','name3', 'name4']
score = [89.2, 95.54, 85, 86]
years = [2016, 2017, 2016, 2015]
methods_dtype = ['type1', 'type2', 'type1', 'type1']
pub_years = np.unique(years)

fig, ax = plt.subplots()
barplot = ax.bar(years, score)
plt.show()

这里的第一个问题是 2016 年的两个条形图彼此重叠(我看到一些使用宽度增量移动条形图的示例,但是,在这种情况下,我事先不知道会使用多少种方法那一年)。
第二个问题是颜色编码。

请注意,输入只是数据的子集。一年中可能有多个条目(特定年份有多个出版物)。还可能存在具有多个条目的数据类型(对此数据类型进行操作的方法不止一种)。

最佳答案

以下是您可以执行的操作的示例,您可以根据自己的具体需求进行调整:

score = range(1,7)
years = [2015, 2016, 2017]*2
methods_dtype = ['type1', 'type2']*3

color = {'type1': 'b', 'type2': 'g'}
offset = {'type1': -0.2, 'type2': 0}

plt.figure(1).clf()
for s, y, m in zip(score, years, methods_dtype):
    x = y + offset[m]
    plt.bar(x, s, color=color[m], width=0.2)
plt.xticks([2015, 2016, 2017], [2015, 2016, 2017])

关于python - 如何使用特殊设计的 matplot lib 在 python 中绘制条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45991009/

相关文章:

python - 计算两个日期之间的完整月数?

python - 输入/输出矢量 shapefile 的测试点

python - 在轮廓上绘制点 - Matplotlib/Python

python - 在 SQLAlchemy 中执行 EXCEPT SELECT

python - 模块未找到错误: No module named 'tensorflow' Vs code

python - django 将日期字段更改为整数字段无法迁移

python-3.x - GeoPandas、MatPlotLib 绘制自定义颜色

python - 在 matplotlib 中更改填充颜色

python - 在多进程中运行绘图时出现 matplotlib 错误

python - 使用另一个 yaml 文件的内容更新