Matplotlib hist() диапазон автозагрузки
Я пытаюсь сделать гистограмму в определенном диапазоне, но функция matplotlib.pyplot.hist() продолжает обрезать диапазон в ячейки с элементами в них. Пример игрушки:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.uniform(-100,100,1000)
nbins = 100
xmin = -500
xmax = 500
fig = plt.figure();
ax = fig.add_subplot(1, 1, 1)
ax.hist(x, bins=nbins,range=[xmin,xmax])
plt.show()
Дает график с диапазоном [-100,100]. Почему диапазон не [-500,500], как указано?
(Я использую Enthought Canopy 1.4 и извините, но у меня нет достаточно высокой репутации, чтобы опубликовать изображение сюжета.)
Ответы
Ответ 1
Фактически, он работает, если вы укажете с range
интервал короче [-100, 100]
. Например, эта работа:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.uniform(-100, 100, 1000)
plt.hist(x, bins=30, range=(-50, 50))
plt.show()
Если вы хотите построить гистограмму в диапазоне, превышающем [x.min(), x.max()]
, вы можете изменить xlim
свойство сюжета.
import numpy as np
import matplotlib.pyplot as plt
x = np.random.uniform(-100, 100, 1000)
plt.hist(x, bins=30)
plt.xlim(-500, 500)
plt.show()
Ответ 2
следующий код предназначен для создания одинакового ограничения по оси Y на двух участках
f ,ax = plt.subplots(1,2,figsize = (30, 13),gridspec_kw={'width_ratios': [5, 1]})
df.plot(ax = ax[0], linewidth = 2.5)
ylim = [df['min_return'].min()*1.1,df['max_return'].max()*1.1]
ax[0].set_ylim(ylim)
ax[1].hist(data,normed =1, bins = num_bin, color = 'yellow' ,alpha = 1)
ax[1].set_ylim(ylim)