我在直方图中绘制了一些值,并想要缩放 y 轴,但我只找到了标准化 y 轴值或对数缩放它们的方法。我的值以 100ps 时间步为单位,我想将每个 y 轴值乘以 0.1,以获得一个漂亮且更容易理解的 ns 步长。
如何缩放直方图中的 y 轴值?
n, bins, patches = plt.hist(values1, 50, facecolor='blue', alpha=0.9, label="Sample1",align='left')
n, bins, patches = plt.hist(values2, 50, facecolor='red', alpha=0.9, label="Sample2",align='left')
plt.xlabel('value')
plt.ylabel('time [100ps]')
plt.title('')
plt.axis([-200, 200, 0, 180])
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
在此图中,y 轴上的 10 表示 1ns:
我解决的方法非常简单:只需在绘制之前将数组values1和values2乘以0.1即可。
matplotlib 中存在对数缩放的原因是对数转换非常常见。对于简单的乘法缩放,只需将您正在绘制的数组相乘就非常容易。
编辑:你是对的,我错了并且感到困惑(没有注意到你正在处理直方图)。然后我要做的是使用该matplotlib.ticker模块来调整 y 轴上的刻度。见下文:
# Your code.
n, bins, patches = plt.hist(values1, 50, facecolor='blue', alpha=0.9, label="Sample1",align='left')
n, bins, patches = plt.hist(values2, 50, facecolor='red', alpha=0.9, label="Sample2",align='left')
plt.xlabel('value')
plt.ylabel('time [100ps]')
plt.title('')
plt.axis([-200, 200, 0, 180])
plt.legend()
# My addition.
import matplotlib.ticker as mtick
def div_10(x, *args):
"""
The function that will you be applied to your y-axis ticks.
"""
x = float(x)/10
return "{:.1f}".format(x)
# Apply to the major ticks of the y-axis the function that you defined.
ax = plt.gca()
ax.yaxis.set_major_formatter(mtick.FuncFormatter(div_10))
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14590 次 |
| 最近记录: |