我需要从参数列表(成对的mu和sigma)中创建一个包含多个高斯直方图的图形。我到目前为止所拥有的:
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
import numpy as np
def single_camel_plot(mu, sigma, ax):
x = np.linspace(mu - 4*sigma, mu + 4*sigma, 1000)
sns.lineplot(x, stats.norm.pdf(x, mu, sigma), ax=ax)
ax.set_ylim(bottom=0)
fig, ax = plt.subplots()
mu_sigma_pairs = [(16900, 2100), (18200, 1500)]
for mu, sigma in mu_sigma_pairs:
single_camel_plot(mu, sigma, ax)
输出是此图。
理想情况下,两个直方图将使用单个y轴而不是辅助轴,ylim
应该进行调整以适应最高的曲线。
答案 0 :(得分:1)
您将需要在循环外部设置极限,以便在绘图已满时可以自动缩放。
import matplotlib.pyplot as plt
from scipy import stats
import numpy as np
def single_camel_plot(mu, sigma, ax):
x = np.linspace(mu - 4*sigma, mu + 4*sigma, 1000)
ax.plot(x, stats.norm.pdf(x, mu, sigma))
fig, ax = plt.subplots()
mu_sigma_pairs = [(16900, 2100), (18200, 1500)]
for mu, sigma in mu_sigma_pairs:
single_camel_plot(mu, sigma, ax)
ax.set_ylim(bottom=0) # <------- HERE
plt.show()