【问题标题】:How can I add spacing between points on the axis in matplotlib?如何在 matplotlib 中添加轴上的点之间的间距?
【发布时间】:2015-11-20 16:19:47
【问题描述】:

我有一个包含大量数据的图表(x 范围为 7500,y 范围为 5100)。图表上的每个条是该单词在文本中使用的次数。所以我想在 x 轴上的每个点都有这个词。

我的问题是如何分隔它们。

plt.figure(figsize=(12, 9))
ax = plt.subplot(111)
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)

ax.get_xaxis().tick_bottom()
ax.get_yaxis().tick_left()

plt.xticks(x, objects, fontsize=12, rotation='vertical')
plt.yticks(range(300, 5600, 300), fontsize=12)

plt.xlabel("Word", fontsize=16)
plt.ylabel("Usage", fontsize=16)

plt.margins(0.2)
plt.subplots_adjust(bottom=0.15)
plt.bar(y_pos, performance, align="center", alpha=0.5)
plt.title('Word Usage in Beloved')
plt.show()

目前代码产生:

【问题讨论】:

  • 您想在 x 轴上有 7500 个(可读)字吗?这将是一个非常广泛的情节,不是吗?
  • @tom 这是一个很好的观点...我将单词/数字组合存储在 OrderedDict 中。有没有一种简单的方法可以删除所有单词少于 4 个字符或使用少于 5 个字符的项目?

标签: python matplotlib graph bigdata


【解决方案1】:

以下是我使用您的代码修改的代码。通过将字典键添加到 xticks 并将值添加到 bar 并通过测量 D 的长度,我能够获得每个 x 轴条的每个单词。

plt.figure(figsize=(12, 9))
ax = plt.subplot(111)
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)

ax.get_xaxis().tick_bottom()
ax.get_yaxis().tick_left()

D = {u'Label0':26, u'Label1': 17, u'Label2':30, u'Label3': 20, u'Label4': 12}

y = [4, 9, 2]

plt.xticks(range(len(D)), D.keys(), fontsize=12, rotation='vertical')
plt.yticks(range(300, 5600, 300), fontsize=12)

plt.xlabel("Word", fontsize=16)
plt.ylabel("Usage", fontsize=16)

plt.margins(0.2)
plt.subplots_adjust(bottom=0.15)
plt.bar(y, D.values(), align="center", alpha=0.5)
plt.title('Word Usage in Beloved')
plt.show()

由于您的其余代码未发布,因此我只能使用我拥有的代码。如果您发布完整的代码,我可能会更好地帮助您。希望这会有所帮助。

【讨论】: