matplotlib:带有2个刻度的直方图?

时间:2018-09-03 08:42:14

标签: python python-3.x matplotlib

我有一个熊猫系列X,分别为X1,X2,... Xn

我将X系列标准化为具有Ymean=0的新std=1系列。

我想用2个histogram绘制X的{​​{1}},一个是原始值,另一个是归一化值。

我该如何使用matplotlib做到这一点?

更新

xticks

现在,我想绘制import numpy as np x = np.random.randint (0,100,1000) y = (x- np.mean(x))/np.std(x) 的直方图,但还要显示原始值(y),不仅要显示x的值。

1 个答案:

答案 0 :(得分:1)

这里是一个示例,带有第二个缩放的顶轴:

import numpy as np
import matplotlib.pyplot as plt

# Some data
x = 12 + 3*np.random.randn(1000)
x_normed = (x - np.mean(x))/np.std(x)

# Graph
fig, ax1 = plt.subplots()

ax1.hist(x_normed, bins=20)

x1_lim = np.array(ax1.get_xlim())
x2_lim = x1_lim*np.std(x) + np.mean(x)

ax2 = ax1.twiny()
ax2.set_xlim(x2_lim)

ax1.set_ylabel('count')
ax1.set_xlabel('normed x', color='k')
ax2.set_xlabel('x', color='k');

相反,我认为更好:

import numpy as np
import matplotlib.pyplot as plt

# Some data
x = 12 + 3*np.random.randn(1000)

# Graph
fig, ax1 = plt.subplots()

ax1.hist(x, bins=20)

x1_lim = np.array(ax1.get_xlim())
x2_lim = (x1_lim - np.mean(x))/np.std(x)

ax2 = ax1.twiny()
ax2.set_xlim(x2_lim)

ax1.set_ylabel('count')
ax1.set_xlabel('x', color='k')
ax2.set_xlabel('x normed', color='k');

给出:

hist_with_multiple_axis