【问题标题】:Python histogram is located on the right side of exact solutionPython直方图位于精确解的右侧
【发布时间】:2016-09-22 19:52:01
【问题描述】:

我正在做一个热物理学项目,为此我需要将直方图与平滑曲线进行比较。我的问题是直方图放置在曲线的右侧(曲线通过条形的左上角是一致的):

我希望曲线穿过条形顶部的中间,就像它应该的那样。这可能看起来像一件小事,但它真的让我很生气。我希望有一个人可以帮助我!

程序如下所示:

import numpy as np
import matplotlib.pyplot as plt

#--Constants--
M = 20      # Jmax
N = 1000    # Number of J values
T = 50      # Actually T/theta_r

J1 = np.linspace(0,M,N)
J2 = np.linspace(0,M,M+1)

#--Calculate z--
def z(J):
    return(2*J+1)*np.exp(-J*(J+1)/T)

#--Plot--
width = .9                           #Width of columns
plt.bar(J2, z(J2), width=width)      #Plotting histogram
#plt.xticks(ind + width / 2, ind)     #Replacing the indexes under the columns
plt.plot(J1,z(J1),'-r', linewidth=2)
SZ={'size':'16'}
plt.title('Different terms $z(j)$ plotted as function of $j$',**SZ)
plt.xlabel('$j$',**SZ)
plt.ylabel('$z(j)$',**SZ)
plt.show()

【问题讨论】:

  • 我猜这个“问题”与酒吧的放置方式有关!增加粒度并绘制更多条形图,您会看到整个图片都发生了变化,例如试试width = .7?进一步说明:用于绘制单个条形图的数据分布不均;根据.9-范围内数据的“内部”峰值,您绘制的曲线并不完美地位于条形的中间...

标签: python matplotlib histogram


【解决方案1】:

plt.bar 的第一个参数指定每个条形的左手边 的位置。要使每个条形的 中心z(J2) 的图对齐,您需要将边缘的位置偏移条形宽度的负一半:

plt.bar(J2 - 0.5 * width, z(J2), width=width)

【讨论】:

  • 或者,您可以使用关键字选项align='center',它将J2 解释为条形中心的坐标而不是左边缘。
猜你喜欢
  • 1970-01-01
  • 2016-10-22
  • 2012-11-19
  • 1970-01-01
  • 2019-07-24
  • 2022-08-14
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多