【问题标题】:get rid of tiny fraction in bar plot scale (Pandas/Python)摆脱条形图比例中的微小部分(Pandas/Python)
【发布时间】:2017-08-25 13:05:24
【问题描述】:

当我尝试使用pd.cut 绘制(直方图的)条形图时,我得到一个有趣的(而且非常烦人!)0.001 添加到轴(从左侧),使其从-1.001 而不是 -1。问题是如何摆脱这种情况? (请看图)。

我的代码是:

out_i = pd.cut(df, bins=np.arange(-1,1.2,0.2), include_lowest=True)
out_i.value_counts(sort=False).plot.bar(rot=45, figsize=(6,6))
plt.tight_layout()

与 df:

             a 
0    -0.402203
1    -0.019031
2    -0.979292
3    -0.701221
4    -0.267261
5    -0.563602
7    -0.454961
8     0.632456
9    -0.843081
10   -0.629253
11   -0.946188
12   -0.628178
13   -0.776933
14   -0.717091
15   -0.392144
16   -0.799408
17   -0.897951
18    0.255321
19   -0.641854
20   -0.356393
21   -0.507321
22   -0.698238
23   -0.985097
25   -0.661444
26   -0.751593
27   -0.437505
28   -0.413451
29   -0.798745
30   -0.736440
31   -0.672727
32   -0.807688
33   -0.087085
34   -0.393203
35   -0.979730
36   -0.902951
37   -0.454231
38   -0.561951
39   -0.388580
40   -0.706501
41   -0.408248
42   -0.377235
43   -0.283110
44   -0.517428
45   -0.949603
46   -0.268667
47   -0.376199
48   -0.472293
49   -0.211781
50   -0.921520
51   -0.345870
53   -0.542487
55   -0.597996

【问题讨论】:

  • 您是否完全想摆脱 x 轴标签?我在轴上真的看不到0.001
  • @JanTrienes,如果您注意到,X 刻度以 -1.001 开头,而不是 bins 指定的 -1。我希望我的 x 刻度与 bins 所定义的完全一致。此外,还有-2.22e-16 而不是0
  • 试试pd.cut(..., include_lowest=False)。使用它,我得到以下间隔:[(-1.0, -0.8] < (-0.8, -0.6] < (-0.6, -0.4] < (-0.4, -0.2] ... (0.2, 0.4] < (0.4, 0.6] < (0.6, 0.8] < (0.8, 1.0]]
  • 所以你想要一个从 -1 开始的左闭区间。 right=False-2.22e-16 是浮点舍入误差 (-1 + 5* 0.2 != 0)
  • 是否可以从情节的小数点后二位开始砍掉所有内容?

标签: python pandas histogram


【解决方案1】:

如果可以去掉间隔的小数点,则生成一个自定义的间隔标签列表并将其设置为绘图的xticklabels

out_i = pd.cut(df['a'], bins=np.arange(-1,1.2,0.2), include_lowest=True)

intervals = out_i.cat.categories
labels = ['(%.1f, %.1f]' % (int(interval.left*100)/100, interval.right) for interval in intervals]

ax = out_i.value_counts(sort=False).plot.bar(rot=45, figsize=(6,6))
ax.set_xticklabels(labels)
plt.tight_layout()

结果如下图:

注意:这将始终输出一个半闭区间(a,b]。可以通过根据pd.cut的参数使括号动态化来改进。

【讨论】:

  • 谢谢!但是当我有 -11 的确切值时会发生什么?这个图应该代表相关系数的分布,它们当然可能会得到-1,1的值。
  • @ArnoldKlein 分布和实际 bin 保持不变,只有标签发生了变化。所以值 -1 将与-1, -0.8 bin 相关联。
  • 哦,我明白了!我的错。当然,多么神奇的解决方案!谢谢!所以除了标签没有任何变化。太棒了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
相关资源
最近更新 更多