去除条形图比例中的微小分数(熊猫/Python)

去除条形图比例中的微小分数(熊猫/Python),python,pandas,histogram,Python,Pandas,Histogram,当我尝试使用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()

当我尝试使用
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

如果可以删除间隔的小数点,则生成间隔标签的自定义列表,并将其设置为绘图的
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

您是否完全想去掉x轴标签?我在轴上看不到
0.001
。@Jantreenes,如果您注意到,x刻度从-1.001开始,而不是
bins
指定的-1。我想要我的x tICK完全由
bins
定义。此外,还有
-2.22e-16
而不是
0
。尝试
pd.cut(…,include_loost=False)
。使用它,我得到以下间隔:
[(-1.0,-0.8]<-0.8,-0.6]<-0.6,-0.4,-0.4]…(0.2,0.4,0.6]<(0.4,0.6,0.8)(0.8,1.0]
因此您需要从-1开始的左闭区间。
right=False
-2.22e-16
是浮点舍入误差(-1+5*0.2!=0)从绘图的第二个小数点开始删去所有内容可以接受吗?谢谢!但是当我有
-1
1
的精确值时会发生什么?这个绘图应该代表相关系数的分布,它们肯定会得到-1,1的值。@ArnoldKlein分布和实际的bins保持不变,只有更改的标签。因此-1的值将与
-1,-0.8
bin相关联。哦,我明白了!我的错。当然,这是一个多么神奇的解决方案!谢谢!所以除了标签之外,没有任何变化。太棒了!