我正在尝试在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()
答案 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)
给我:
从hist
返回的元组包含有用的信息,尤其是第一个元素(上面的{a
)是密度,第二个元素(上面的b
)是它选择的容器。您可以通过执行以下操作将所有这些加在一起:
sum(a[0] * np.diff(b))
然后拿回1。
正如ImportanceOfBeingErnest所说,如果图不适合该区域,您可以使用tight_layout()
来调整图的大小