我使用条形图来绘制查询频率,但我始终看到条形之间的间距不均匀。这些看起来应该与蜱有关,但它们处于不同的位置
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
有什么办法可以让这些保持一致吗?
问题与锯齿有关,因为条形太细而无法真正分开。根据条形开始处的子像素值,空白区域是否可见。绘图的 dpi 可以为显示的图形或保存图像时设置。但是,如果条形太多,增加 dpi 只会有一点帮助。
按照这篇文章中的建议,您还可以将图像保存为 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()