matplotlib 不规则间距条形图

7qhs6swi  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(132)

我正在使用条形图绘制查询频率,但我总是看到条形图之间的间距不均匀。这些看起来应该和蜱虫有关,但它们的位置不同
这显示在较大的图


和较小的

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

有什么办法可以使这些一致吗?

vtwuwzda

vtwuwzda1#

问题与锯齿有关,因为条太细,不能真正分离。取决于条形开始的子像素值,白色空间将可见或不可见。可以为显示的图形或保存图像时设置绘图的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的图片:

相关问题