Python 如何在matplotlib中居中直方图中的标签
我有以下问题。我需要在plt.hist的X轴上将标签居中。我在这里找到了一些答案:建议使用align=left/mid/right。但是,它没有给我正确的输出: plt.histdata['Col1'],align='left' plt.histdata['Col1'],align='mid' plt.histdata['Col1'],align='right' 我想把OK和18放在每个栏的中间。我怎样才能修好它 全部代码:Python 如何在matplotlib中居中直方图中的标签,python,matplotlib,Python,Matplotlib,我有以下问题。我需要在plt.hist的X轴上将标签居中。我在这里找到了一些答案:建议使用align=left/mid/right。但是,它没有给我正确的输出: plt.histdata['Col1'],align='left' plt.histdata['Col1'],align='mid' plt.histdata['Col1'],align='right' 我想把OK和18放在每个栏的中间。我怎样才能修好它 全部代码: plt.style.use('ggplot') plt.xtic
plt.style.use('ggplot')
plt.xticks(rotation='vertical')
plt.locator_params(axis='y', integer=True)
plt.suptitle('My histogram', fontsize=14, fontweight='bold')
plt.ylabel('Frequency', fontweight='bold')
plt.hist(data['Col1'], align='mid')
plt.show()
Matplotlib的带有默认参数的hist主要用于连续数据。
如果未给出任何参数,matplotlib会将值的范围划分为10个大小相同的容器
给定字符串数据时,matplotlib会在内部用数字0、1、2等替换字符串。。。。在这种情况下,ok得到值0,18 let得到值1。将该范围划分为10,将创建10个存储箱:0.0-0.1、0.1-0.2、…、0.9-1.0。钢筋放置在料仓中心0.05、0.15、…、0.95和默认对齐的“中间”。当您想要绘制更窄的条形图时,此居中功能会有所帮助。在这种情况下,除第一个和最后一个条外,所有条的高度均为0
这里是正在发生的事情的可视化。垂直线显示放置垃圾箱边界的位置
从matplotlib导入pyplot作为plt
将numpy作为np导入
作为pd进口熊猫
data=pd.DataFrame{'Col1':np.random.choice['ok','18let'],10,p=[0.2,0.8]}
plt.style.使用“ggplot”
图,ax=plt子批次
ax.locator_paramsaxis='y',integer=True
ax.set_ylabel'Frequency',fontwweight='bold'
_计数,bin_边界,_patches=ax.histdata['Col1']
对于bin_边界中的i:
ax.axvlinei,颜色='海军',ls='-'
ax.texti,1.01,f'{i:.1f}',transform=ax.get_xaxis_transform,ha='center',va='bottom',color='navy'
节目
为了更好地控制离散数据的直方图,最好在给定值周围给出明确的BIN,例如plt.hist…,BIN=[-0.5,0.5,1.5]。更好的方法是创建计数图:对单个值进行计数并绘制条形图直方图只是一种特定类型的条形图
下面是这样一个计数图的示例。请注意,numpy的return_counts=参数仅适用于1.9及更高版本
从matplotlib导入pyplot作为plt
将numpy作为np导入
作为pd进口熊猫
data=pd.DataFrame{'Col1':np.random.choice['ok','18let'],10,p=[0.2,0.8]}
plt.style.使用“ggplot”
plt.locator_paramsaxis='y',integer=True
plt.ylabel'Frequency',fontwweight='bold'
标签,计数=np.uniquedata['Col1'],返回\u计数=True
plt.bar标签、计数
节目
请注意,seaborn's能够更好地处理离散数据。使用字符串或显式设置离散=真时,会自动计算相应的存储箱。代码?看起来你做得很对,但是你有一个额外的垃圾箱,把路线弄丢了。我把它放在下面,谢谢你的回复