【问题标题】:Python bar plot with irregular spacing不规则间距的 Python 条形图
【发布时间】:2019-11-21 06:25:58
【问题描述】:

我正在使用条形图来绘制查询频率,但我始终看到条形之间的间距不均匀。这些看起来应该与蜱有关,但它们位于不同的位置

这显示在更大的图中

还有更小的


def TestPlotByFrequency (df, f_field, freq, description):
    import matplotlib.pyplot as plt

    fig, ax = plt.subplots()
    ax.bar(df[f_field][0:freq].index,\
           df[f_field][0:freq].values)


    plt.show()

这也与数据无关,顶部没有相同的频率计数

    count
0   8266
1   6603
2   5829
3   4559
4   4295
5   4244
6   3889
7   3827
8   3769
9   3673
10  3606
11  3479
12  3086
13  2995
14  2945
15  2880
16  2847
17  2825
18  2719
19  2631
20  2620
21  2612
22  2590
23  2583
24  2569
25  2503
26  2430
27  2287
28  2280
29  2234
30  2138

有没有办法让这些一致?

【问题讨论】:

标签: python matplotlib


【解决方案1】:

问题与混叠有关,因为条形太细而无法真正分开。根据条形开始的子像素值,空白区域是否可见。可以为显示的图形或保存图像时设置绘图的 dpi。但是,如果条形太多,增加 dpi 只会有一点帮助。

按照this post 的建议,您还可以将图像保存为 svg 以获得矢量格式。根据您想使用它的位置,它可以完美呈现。

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

matplotlib.rcParams['figure.dpi'] = 300

t = np.linspace(0.0, 2.0, 50)
s = 1 + np.sin(2 * np.pi * t)

df = pd.DataFrame({'time': t, 'voltage': s})

fig, ax = plt.subplots()
ax.bar(df['time'], df['voltage'], width = t[1]*.95)

plt.savefig("test.png", dpi=300)
plt.show()

100 dpi 的图像:

300 dpi 的图像:

【讨论】:

    猜你喜欢
    • 2015-05-27
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    相关资源
    最近更新 更多