【问题标题】:python plot frequency with continuous integer labeled x-axispython绘图频率与标记为x轴的连续整数
【发布时间】:2015-04-27 23:52:27
【问题描述】:

我正在尝试根据以下 pandas 表制作具有特殊 x 轴请求的频率图。

     pos               freq
0     67                  1
1    285                  5
2    288                  1
3    397                  4
4    592                  1
5    640                  3

由于我的频率本身是整数(pos 列),我希望 x 轴只带有正常的连续数字标签。但是,使用简单的条形图:

plot_pos=pos_freq.plot(kind='bar',x='pos')

我只会得到标记为 67、285、288、397、592、640 的 x 轴。相反,我希望 x 轴是一系列连续整数/间隔,例如60, 65, 70, 75, ....645, 650;并且频率条仍然显示在正确的位置。

目前我不确定条形图是否是一个不错的选择,而且我是使用 python 绘图的新手。 (我可以在 excel 中完成;或者我可以添加另一个 x 轴...)任何关于更好方法的建议都值得赞赏!

【问题讨论】:

    标签: python pandas matplotlib plot


    【解决方案1】:

    matplotlib

    import matplotlib.pyplot as plt
    plt.bar(pos_freq['pos'], pos_freq['freq'])
    plt.show()
    

    【讨论】:

    • 谢谢!我对不同的绘图选项感到困惑。感谢您指出 matplotlib 模块:)
    【解决方案2】:

    我无法使用 pandas dataframe.plot() 获取 x 标签,所以我直接使用了 matplotlib

    import matplotlib.pyplot as plt
    ticks = range(0,700,5)  #this could whatever interval you wanted
    fig, ax = plt.subplots()
    ax.bar(pos_freq["pos"],pos_freq["freq"])
    ax.set_xticks(ticks)
    

    你可能还想用所有这些额外的滴答声把它做得更大一点

    fig.set_size_inches(30,10.5)
    

    【讨论】:

    • 感谢您的解决方案,我非常喜欢您提到的技巧:)
    【解决方案3】:

    又快又脏:

    pos_freq.reindex(range(pos_freq['pos'].min(), pos_freq['pos'].max())).plot(kind='bar')
    

    【讨论】:

    • 一些进一步的解释会有所帮助!
    • 谢谢@8one6,但我无法运行您的代码 - 我想您可能错过了“)”。
    • 非常感谢您的评论。与其他方法相比,它有点慢。
    猜你喜欢
    • 2016-12-14
    • 2019-09-24
    • 1970-01-01
    • 2017-09-21
    • 2016-05-10
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多