【问题标题】:Overlapping bars in horizontal Bar graph水平条形图中的重叠条形
【发布时间】:2015-01-13 01:44:38
【问题描述】:

我正在使用来自
的 mathplotlib 生成水平条形图 所以:How to plot multiple horizontal bars in one chart with matplotlib。问题是当我有超过 2 个水平条时,这些条会重叠。不确定,我做错了什么。 下面是图形代码

import pandas
import matplotlib.pyplot as plt
import numpy as np

df = pandas.DataFrame(dict(graph=['q1','q2','q3' , 'q4','q5',' q6'],
                           n=[3, 5, 2,3 ,5 , 2], m=[6, 1, 3, 6 , 1 , 3])) 

ind = np.arange(len(df))
width = 0.4
opacity = 0.4
fig, ax = plt.subplots()


ax.barh(ind, df.n, width, alpha=opacity, color='r', label='Existing')
ax.barh(ind + width, df.m, width, alpha=opacity,color='b', label='Community')
ax.barh(ind + 2* width, df.m, width, alpha=opacity,color='g', label='Robust')

ax.set(yticks=ind + width , yticklabels=df.graph, ylim=[2*width - 1, len(df)])
ax.legend()



#plt.xlabel('Queries')
plt.xlabel('Precesion')
plt.title('Precesion for these  queries')

plt.show()

目前,图表如下所示

【问题讨论】:

    标签: python graph matplotlib


    【解决方案1】:

    您将条形的宽度设置为 0.4,但每组中有三个条形。这意味着每组的宽度是 1.2。但是您将刻度仅设置为 1 个单位,因此您的条不适合空格。

    由于您使用的是 pandas,因此您实际上不需要执行所有这些操作。只需执行df.plot(kind='barh'),您将获得数据框数据的水平条形图。您可以调整显示颜色等,方法是使用您可以在文档中找到的 plot 的各种参数。 (如果要将“图形”列用作y轴标签,请将其设置为索引:df.set_index('graph').plot(kind='barh')

    (使用df.plot 将给出一个每组只有两个条形图的条形图,因为您的 DataFrame 只有两个数字列。在您的示例中,您绘制了两次列m,这似乎不是很有用。如果您真的想这样做,你可以在 DataFrame 中添加一个重复的列。)

    【讨论】:

    • 唯一的问题是我无法命名 yaxis 端的元素。它只是枚举。 imgur.com/myoXtQv 而不是 yaxis 中的 0,1,2 我需要添加自定义名称。我无法在有关如何执行此操作的文档中找到它。有什么想法吗?
    • @Rahul:如果您设置索引,它将自动用于标签。做df.set_index('graph').plot(kind='barh')
    • 不,那不完全适合我。如果我希望标签在 yaxis 上为 q1 、 q2 和 q3 。然后 pandas 期望来自 q1 的值。事实并非如此。我想要的只是标记它们而不是枚举它。
    • @Rahul:我不太明白你在说什么,但你可以用pyplot.gca().yaxis.set_ticklabels(["A", "B", "C", "D", "E", "F"]) 之类的东西设置刻度标签。您可以通过谷歌搜索“matplotlib 刻度标签”等找到有关如何执行此类操作的大量信息。
    【解决方案2】:

    ax=df.plot.barh(width=0.85,figsize=(15,15))

    调整宽度(应小于 1 否则重叠)和 figsize 以获得最佳和清晰的条形视图。因为如果数字更大,您可以对条形图有一个清晰更大的视图,这是最终目标。

    【讨论】:

      猜你喜欢
      • 2012-05-11
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      • 1970-01-01
      • 2014-09-10
      相关资源
      最近更新 更多