【问题标题】:Plotting bars as a line matplotlib将条形图绘制为线 matplotlib
【发布时间】:2022-11-10 22:04:40
【问题描述】:

我想在 matplotlib 中制作一个条形图,但是我希望它有线条而不是条形图(请参见底部的图片作为示例) 它来自这篇论文:https://arxiv.org/abs/1907.10529

在尝试搜索解决方案时,我只找到有关如何在条形图中绘制线条的教程或帖子,但这不是我想要的。

有人知道我在搜索时应该使用的正确术语吗?任何帮助表示赞赏:)

【问题讨论】:

  • 您是否尝试更改条形的宽度?然后你的酒吧看起来像线条。
  • 正如@Rabinzel 建议的那样,您正在寻找带有参数的matplotlib.pyplot.bar宽度设置为某个非零值。

标签: python matplotlib visualization


【解决方案1】:

您可以使用线宽和 alpha 值来实现您想要的。另请注意,您需要注意刻度值。 考虑以下值:

[0.22, 0.17, 0.13, 0.10, 0.08, 0.07, 0.065, 0.06, 0.055, 0.05]

您可以执行以下操作:

import matplotlib.pyplot as plt

values = [0.22, 0.17, 0.13, 0.10, 0.08, 0.07, 0.065, 0.06, 0.055, 0.05]
plt.figure()
ticks = []
# tip from Rabinzel to use 1 in enumerate instead of adding +1 to num
for num, value in enumerate(values, 1):
    plt.plot([num, num],[0, value], lw=5, alpha=0.4, c='b')
    plt.scatter(num, value,c='b')
    ticks.append(num)
plt.xlabel("Span Length (# of Words)")    
plt.ylabel("Sampling Probability")
plt.xticks(ticks)
plt.ylim(0,0.25)
plt.show()

【讨论】:

  • 建议:您可以将第二个参数传递给enumerate,它定义了您的numstartfor num, value in enumerate(values, 1),那就不用每次使用都加1了。
  • @Rabinzel,非常感谢您的提示,不知道考虑到这一点我会更新答案
  • 嘿 Rabinzel 和 Lucas,感谢您抽出宝贵时间回复此问题 :) 多亏了你们,问题现在已经解决了!!
猜你喜欢
  • 2020-02-28
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-10
  • 2018-11-26
相关资源
最近更新 更多