Matplotlib修复y轴

时间:2019-04-08 20:17:42

标签: 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()

问题是我的图像像这样出现

https://imgur.com/a/Q8dvHKR

有没有办法确保所有块的宽度相同,并跳过500到300之间的空格

2 个答案:

答案 0 :(得分:1)

您可以确保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)

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

答案 1 :(得分:1)

或者,您可以使用SELECT UID, GetArrayElement(GetArrayElement(Record,0),3) AS DI_0, system.timestamp AS Start FROM [IotHub] WHERE LAG(GetArrayElement(GetArrayElement(Record,0), 3),1) OVER (LIMIT DURATION(minute, 10)) <> GetArrayElement(GetArrayElement(Record,0), 3)) SELECT DATEDIFF (second, LAG(system.timestamp,1) OVER (LIMIT DURATION(minute, 10)), system.timestamp) AS zeitdiff, UID, Start, DI_0 INTO [toPowerBI] FROM Startzeit WHERE UID = 'WISE-4012_00D0C9E43D10' 函数将一定范围的数字用作y值,以放置水平条,然后使用range()函数(其第一个参数为刻度线的位置,第二个参数是刻度线标签。

plt.yticks()

enter image description here