更改直方图 matplotlib 中的默认 x 范围

Posted

技术标签:

【中文标题】更改直方图 matplotlib 中的默认 x 范围【英文标题】:changing default x range in histogram matplotlib 【发布时间】:2012-08-20 23:46:36 【问题描述】:

我想更改直方图的默认 x 范围。数据的范围是从 7 到 12。但是,默认情况下,直方图从 7 开始,到 13 结束。我希望它从 6.5 开始,到 12.5 结束。但是,刻度应该从 7 变为 12。我该怎么做?

import asciitable 
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import pylab
from pylab import xticks

data = asciitable.read(file)
hmag = data['col8']
visits = data['col14']
origin = data['col13']


n, bins, patches = plt.hist(hmag, 30, facecolor='gray', align='mid')
xticks(range(7,13))
pylab.rc("axes", linewidth=8.0)
pylab.rc("lines", markeredgewidth=2.0) 
plt.xlabel('H mag', fontsize=14)
plt.ylabel('# of targets', fontsize=14)
pylab.xticks(fontsize=15)
pylab.yticks(fontsize=15)
plt.grid(True)
plt.savefig('hmag_histogram.eps', facecolor='w', edgecolor='w', format='eps')
plt.show()

【问题讨论】:

【参考方案1】:

以下代码用于在两个子图上设置相同的 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 = [lower_limit,upper_limit]
ax[0].set_ylim(ylim)
ax[1].hist(data,normed =1, bins = num_bin, color = 'yellow' ,alpha = 1) 
ax[1].set_ylim(ylim)

提醒一下,plt.hist(range=[low, high]) 如果指定范围大于数据点的最大值和最小值,直方图会自动裁剪范围。所以如果要指定y轴范围号,我更喜欢使用set_ylim

【讨论】:

【参考方案2】:
plt.hist(hmag, 30, range=[6.5, 12.5], facecolor='gray', align='mid')

【讨论】:

感谢您的回复。但是,这样做我得到以下错误: >> n, bins, patch = plt.hist(hmag, range=[6.5, 12.5], 30, facecolor='gray', align='mid') >>SyntaxError:关键字 arg 后的非关键字 arg 您必须使用与我上面使用的相同的顺序。在 range 关键字之后放置 30 将导致 Syntaxerror. @aging_gorrila,yrange 只是绘图的一个属性,不需要重新计算直方图。完成剧情后,您可以致电ylim(a, b) 有没有办法自动设置?比如说,范围从 xmin*-1.1 到 xmax*1.1? @user989762 您可以根据需要设置range=[-xmin * 1.1, xmax * 1.1]。只要确保xminxmax 是有意义的。【参考方案3】:
import matplotlib.pyplot as plt


...


plt.xlim(xmin=6.5, xmax = 12.5)

【讨论】:

这不会保留 bins 参数中定义的 bin 数量。 这在 python3 中有效(假设你的 xmin/xmax 足够大)你能举一个它不保持 bins 计数的例子吗?

以上是关于更改直方图 matplotlib 中的默认 x 范围的主要内容,如果未能解决你的问题,请参考以下文章

在Python matplotlib中更改X轴步骤[重复]

科学计算可视化

Matplotlib_常用图表

奇怪的 matplotlib 直方图:x 限制的变化破坏了直方图

更改 matplotlib 中子图的“xticks”和“Yticks”的字体大小和粗体 [重复]

Matplotlib学习---用matplotlib画直方图/密度图(histogram, density plot)