Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Matplotlib固定y轴_Python 3.x_Matplotlib_Bar Chart - Fatal编程技术网

Python 3.x Matplotlib固定y轴

Python 3.x Matplotlib固定y轴,python-3.x,matplotlib,bar-chart,Python 3.x,Matplotlib,Bar Chart,我正在尝试使用matplotlib创建一个水平条形图。我的数据点是以下两个数组 distance = [100, 200, 300, 400, 500, 3000] value = [10, 15, 50, 74, 95, 98] 我生成水平条形图的代码如下 plt.barh(distance, value, height=75) plt.savefig(fig_name, dpi=300) plt.close() 问题是我的形象是这样的 是否有办法确保所有块的宽度相同,并跳过500到30

我正在尝试使用matplotlib创建一个水平条形图。我的数据点是以下两个数组

distance = [100, 200, 300, 400, 500, 3000]
value = [10, 15, 50, 74, 95, 98]
我生成水平条形图的代码如下

plt.barh(distance, value, height=75)
plt.savefig(fig_name, dpi=300)
plt.close()
问题是我的形象是这样的


是否有办法确保所有块的宽度相同,并跳过500到300之间的空格?可以这样做,确保Matplotlib将标签视为标签,而不是数字。可以通过将它们转换为字符串来实现这一点:

import matplotlib.pyplot as plt

distance = [100, 200, 300, 400, 500, 3000]
value = [10, 15, 50, 74, 95, 98]
distance = [str(number) for number in distance]
plt.barh(distance, value, height=0.75)

请注意,您必须更改高度。

或者,您可以使用一系列数字作为y值,使用
range()
函数定位水平条,然后使用
plt.yticks()根据需要设置刻度标签
函数,其第一个参数是记号的位置,第二个参数是记号标签

import matplotlib.pyplot as plt

distance = [100, 200, 300, 400, 500, 3000]
value = [10, 15, 50, 74, 95, 98]
plt.barh(range(len(distance)), value, height=0.6)
plt.yticks(range(len(distance)), distance)
plt.show()

多么奇怪,在Python 2.7中,使用您的代码看起来是这样的:。断轴是一种痛苦,例如问题/答案