【问题标题】:How to plot this this graph?如何绘制此图?
【发布时间】:2019-07-10 02:26:51
【问题描述】:

您好,数据可视化专家!

我正在尝试在 python 中绘制此图形手绘示例。

但是,与普通绘图相比,绘图似乎要复杂得多。

如果可视化专家可以帮助绘制此图,那就太好了。在手绘图中,我将所有线条都保留为红色,但是它们可以是不同的颜色。

感谢您的回复:)

【问题讨论】:

  • 您需要搜索“分组条形图”。

标签: python matplotlib plot data-visualization


【解决方案1】:

没有数据我无法帮助绘制它,但您可以通过 Python 解决它,按照以下示例进行操作:

https://matplotlib.org/gallery/units/bar_demo2.html?highlight=bar

^ 您也许可以将每个条形图放在单独的子图上?

如果您的输入是多组数据,您可以在

处查看多数据集直方图

https://matplotlib.org/gallery/statistics/histogram_multihist.html?highlight=hist

^ 如果你想让所有类别的第一列彼此相邻,那么第二列等等。

也许您更喜欢标准直方图:

https://matplotlib.org/gallery/statistics/histogram_features.html?highlight=hist

这真的取决于你想从数据中强调什么

@EDIT

这是一个绘制信息的 Python 程序!您可以轻松调整宽度(我注释掉了一种设置宽度以覆盖空白间隙的方法,但它略微偏离)并绘制一条我将使用的线 width = 0.01

import matplotlib.pyplot as plt
import numpy as np

data = {0: [4, 8, 6],
        1: [2, 4, 3, 6],
        2: [3, 6],
        3: [10, 3, 8, 6, 10, 12]}

fig, ax = plt.subplots(tight_layout=True)

for key, values in data.items():
    ind = np.arange(key, key + 1, 1/len(data[key]))
    width = 0.1 # 1/len(data[key])
    ax.bar(ind + width/len(values), data[key], width, align='center', label="Category {}".format(key + 1))

ax.xaxis.set_ticks([])
ax.set_xticklabels(' ')
ax.legend()
ax.set_ylabel('Some vertical label')
plt.title('My plot for Stack Overflow')
plt.show()

这输出: 认为就是你要找的。这可能不是一个完美的解决方案,但我认为它展示了用于制作此类图的方法:)。如果此解决方案解决了您的问题,如果您可以单击我帖子中的复选标记以接受它作为您正在寻找的答案,我将不胜感激!

【讨论】:

  • 数据为CAT1:4,8,6; CAT2:2、4、3、6; CAT3:3,6; CAT4:10、3、8、6、10、12。该条不是从 0 开始,而是从 1 开始,因此线条是浮动的。其次,它们是线条而不是条形。
【解决方案2】:

像这样设置数据,然后在为条形图选择范围后,您需要交换 X 轴和 Y 轴:

【讨论】:

    猜你喜欢
    • 2021-10-02
    • 1970-01-01
    • 2020-07-24
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多