无法摆脱y轴上的前导零

时间:2019-07-15 16:20:46

标签: python matplotlib

我正在尝试在Matplotlib中绘制图形并将其嵌入pyqt5 GUI中。一切工作正常,除了我的y轴有前导零的负载(我似乎无法摆脱)的事实。

我尝试使用谷歌搜索格式轴,但是似乎没有任何效果!我无法直接设置刻度线,因为无法确定刻度线,因为我将要处理大小不同的数据集。

num_bins = 50

# create an axis
ax = self.figure.add_subplot(111)

# discards the old graph
ax.clear()

##draws the bars and legend
colours = ['blue','red']
ax.hist(self.histoSets, num_bins, density=True, histtype='bar', color=colours, label=colours)
ax.legend(prop={'size': 10})


##set x ticks
min,max = self.getMinMax()
scaleMax = math.ceil((max/10000))*10000
scaleMin = math.floor((min/10000))*10000
scaleRange = scaleMax - scaleMin
ax.xaxis.set_ticks(np.arange(scaleMin, scaleMax+1, scaleRange/4))


# refresh canvas
self.draw()

enter image description here

1 个答案:

答案 0 :(得分:1)

y轴上的所有这些数字都很小,即1e-5的数量级。这是因为密度的积分定义为1,而您的x轴跨度如此之大

我基本上可以通过以下方式重现您的情节:

import matplotlib.pyplot as plt
import numpy as np

y = np.random.normal([190000, 220000], 20000, (5000, 2))

a, b, c = plt.hist(y, 40, density=True)

给我:

above plot

hist返回的元组包含有用的信息,尤其是第一个元素(上面的{a)是密度,第二个元素(上面的b)是它选择的容器。您可以通过执行以下操作将所有这些加在一起:

sum(a[0] * np.diff(b))

然后拿回1。

正如ImportanceOfBeingErnest所说,如果图不适合该区域,您可以使用tight_layout()来调整图的大小