Python 在matplotlib条形图中处理倾斜数据

Python 在matplotlib条形图中处理倾斜数据,python,matplotlib,Python,Matplotlib,我正在使用python matplotlib为倾斜数据集创建条形图。 虽然我能够生成没有任何问题的图,但在生成的图中,与倾斜数据相关的条形图覆盖了条形图的大部分,使其他非倾斜数据看起来相对较小,可以忽略不计 下面是用于生成条形图的代码 import numpy as np import matplotlib.pyplot as plt x=["A","B","C","D","E","F"] y=[25,11,46,895,68,5] fig,ax = plt.subplots() r1=plt.

我正在使用python matplotlib为倾斜数据集创建条形图。 虽然我能够生成没有任何问题的图,但在生成的图中,与倾斜数据相关的条形图覆盖了条形图的大部分,使其他非倾斜数据看起来相对较小,可以忽略不计

下面是用于生成条形图的代码

import numpy as np
import matplotlib.pyplot as plt
x=["A","B","C","D","E","F"]
y=[25,11,46,895,68,5]
fig,ax = plt.subplots()
r1=plt.barh(y=x,
        width=y,
        height=0.8)

#ht = [x.get_width() for x in r1.get_children()]
r1y = np.asarray([x.get_y() for x in r1.get_children()])
r1h = np.asarray([x.get_height() for x in r1.get_children()])

for i in range(5):
    plt.text(y[i],r1y[i]+r1h[i]/2, '%s'% (y[i]), ha='left', va='center')

plt.xticks([0,10,100,1000])
plt.show()

上述代码将创建一个条形图,其中0、10100和1000为xtick值,并根据其值将它们放置在相对距离处

虽然这是有效的和预期的behvaior,但一个倾斜的条形图会影响整个条形图

那么,有没有可能将这些xtick值等距离放置,这样扭曲的数据就不会占用最终输出中的大部分空间

在预期输出中,与0-10-100相关的值应该占据66.6%的空间,而100-1000应该占据33.3%的空间

例如:
尝试添加
plt.xscale('log')

输出:


是否可以将幂表示法中的值替换为(10100,1000)等常规数字?还有,如果我想将(10100200500100010000)设置为xticks,有什么办法吗?@Krishna我不知道该怎么做。谢谢你的帮助@Quanghoang你可以试试。
x=["A","B","C","D","E","F"]
y=[25,11,46,895,68,5]
fig,ax = plt.subplots()
r1=plt.barh(y=x,
        width=y,
        height=0.8)

r1y = np.asarray([x.get_y() for x in r1.get_children()])
r1h = np.asarray([x.get_height() for x in r1.get_children()])

for i in range(5):
    plt.text(y[i],r1y[i]+r1h[i]/2, '%s'% (y[i]), ha='left', va='center')

plt.xscale('log')

plt.show()