Matplotlib 坐标轴自定义比例调整
Matplotlib axis custom scale adjustment
我正在使用
等命令从 pandas 数据框绘图
fig1 = plt.hist(dataset_1[dataset_1>-1.0],bins=bins,alpha=0.75,label=label1,normed=True)
并且这些图在一个 canvas 上包含多个直方图。由于每个直方图都归一化为自己的积分(因此直方图具有相同的面积,因为直方图的目的是说明数据集的形状而不是它们的相对大小),y 轴上的数字没有意义。现在,我使用
抑制 y 轴标记
axes.set_ylabel("(Normalised to unity)")
axes.get_yaxis().set_ticks([])
有没有办法调整 y 轴的比例,使“1”对应于任何直方图上的最高值?这将显示一个垂直刻度来引导眼睛,并用它来判断不同 bin 的相对值。本质上,我的意思是在不影响直方图缩放比例的情况下重新标准化最大显示 y 值(即将轴比例与其表示的内容分离)。
您有两个选择:
绘制直方图,调整y轴刻度。
您可以将 y 刻度设置到最大值的位置,然后用 1
标记它。
import numpy as np; np.random.seed(1)
import matplotlib.pyplot as plt
a = np.random.rayleigh(scale=3, size=2000)
hist, edges,_ = plt.hist(a, ec="k")
plt.yticks([0,hist.max()], [0,1])
plt.show()
标准化直方图,按比例绘制。
您可以按照您希望的方式对直方图进行归一化,方法是首先计算直方图,将其除以最大值,然后绘制直方图。
import numpy as np; np.random.seed(1)
import matplotlib.pyplot as plt
a = np.random.rayleigh(scale=3, size=2000)
hist, edges = np.histogram(a)
hist = hist/float(hist.max())
plt.bar(edges[1:], hist, width=np.diff(edges)[0], align="edge", ec="k")
plt.yticks([0,1])
plt.show()
两种情况下的输出是相同的:
我正在使用
等命令从 pandas 数据框绘图fig1 = plt.hist(dataset_1[dataset_1>-1.0],bins=bins,alpha=0.75,label=label1,normed=True)
并且这些图在一个 canvas 上包含多个直方图。由于每个直方图都归一化为自己的积分(因此直方图具有相同的面积,因为直方图的目的是说明数据集的形状而不是它们的相对大小),y 轴上的数字没有意义。现在,我使用
抑制 y 轴标记axes.set_ylabel("(Normalised to unity)")
axes.get_yaxis().set_ticks([])
有没有办法调整 y 轴的比例,使“1”对应于任何直方图上的最高值?这将显示一个垂直刻度来引导眼睛,并用它来判断不同 bin 的相对值。本质上,我的意思是在不影响直方图缩放比例的情况下重新标准化最大显示 y 值(即将轴比例与其表示的内容分离)。
您有两个选择:
绘制直方图,调整y轴刻度。
您可以将 y 刻度设置到最大值的位置,然后用 1
标记它。
import numpy as np; np.random.seed(1)
import matplotlib.pyplot as plt
a = np.random.rayleigh(scale=3, size=2000)
hist, edges,_ = plt.hist(a, ec="k")
plt.yticks([0,hist.max()], [0,1])
plt.show()
标准化直方图,按比例绘制。
您可以按照您希望的方式对直方图进行归一化,方法是首先计算直方图,将其除以最大值,然后绘制直方图。
import numpy as np; np.random.seed(1)
import matplotlib.pyplot as plt
a = np.random.rayleigh(scale=3, size=2000)
hist, edges = np.histogram(a)
hist = hist/float(hist.max())
plt.bar(edges[1:], hist, width=np.diff(edges)[0], align="edge", ec="k")
plt.yticks([0,1])
plt.show()
两种情况下的输出是相同的: