Python 如何为直方图绘制两级x轴标签?
除了柱状图外,有没有办法对这两个x轴标签进行相同的处理? 我想显示两个级别的值,一个用于公制,另一个用于英制单位。我尝试将上面链接中的脚本改编为直方图脚本,但我不确定如何将直方图函数与ax1连接起来。处理Python 如何为直方图绘制两级x轴标签?,python,matplotlib,histogram,axis,Python,Matplotlib,Histogram,Axis,除了柱状图外,有没有办法对这两个x轴标签进行相同的处理? 我想显示两个级别的值,一个用于公制,另一个用于英制单位。我尝试将上面链接中的脚本改编为直方图脚本,但我不确定如何将直方图函数与ax1连接起来。处理 """ Demo of the histogram (hist) function with a few features. In addition to the basic histogram, this demo shows a few optional features:
"""
Demo of the histogram (hist) function with a few features.
In addition to the basic histogram, this demo shows a few optional features:
* Setting the number of data bins
* The ``normed`` flag, which normalizes bin heights so that the integral of
the histogram is 1. The resulting histogram is a probability density.
* Setting the face color of the bars
* Setting the opacity (alpha value).
"""
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = ax1.twiny()
# example data
mu = 100 # mean of distribution
sigma = 15 # standard deviation of distribution
x = mu + sigma * np.random.randn(10000)
num_bins = 50
# the histogram of the data
n, bins, patches = plt.hist(x, num_bins, normed=1, facecolor='green', alpha=0.5)
ax1.set_xlabel(r"Original x-axis: $X$")
new_tick_locations = np.array([.2, .5, .9])
def tick_function(X):
V = 1/(1+X)
return ["%.3f" % z for z in V]
# Move twinned axis ticks and label from top to bottom
ax2.xaxis.set_ticks_position("bottom")
ax2.xaxis.set_label_position("bottom")
# Offset the twin axis below the host
ax2.spines["bottom"].set_position(("axes", -0.15))
# Turn on the frame for the twin axis, but then hide all
# but the bottom spine
ax2.set_frame_on(True)
ax2.patch.set_visible(False)
for sp in ax2.spines.itervalues():
sp.set_visible(False)
ax2.spines["bottom"].set_visible(True)
ax2.set_xticks(new_tick_locations)
ax2.set_xticklabels(tick_function(new_tick_locations))
ax2.set_xlabel(r"Modified x-axis: $1/(1+X)$")
y = mlab.normpdf(bins, mu, sigma)
plt.xlabel('Smarts')
plt.ylabel('Probability')
plt.title(r'Histogram of IQ: $\mu=100$, $\sigma=15$')
# Tweak spacing to prevent clipping of ylabel
plt.subplots_adjust(left=0.15)
plt.show()
只需将您的
hist
呼叫替换为:
n, bins, patches = ax1.hist(x, num_bins, normed=1, facecolor='green', alpha=0.5)
检查以查看哪些成员函数可用只需将您的
hist
调用替换为:
n, bins, patches = ax1.hist(x, num_bins, normed=1, facecolor='green', alpha=0.5)
检查以查看哪些成员函数可用