我正在使用一些代码来运行和使用Python生成报告。此代码从在线调查工具获取信息,并对数据运行基本统计信息,然后根据结果生成Word文档。我沿途创建了许多图形。我具有以下功能来帮助我构建一些直方图。
def histogram_by(df, df_column, sort_by, height):
"""
df = location of the data
df_column = column in the data frame with the required data
sort_by = the column used to catagorize the data
height = the calculated height of the subplots, changes depending on number of plots
"""
f, ax = generate_subplots(df[sort_by].nunique(), height)
df[df_column].hist(
ax=ax,
by=df[sort_by],
xrot=360,
bins=np.linspace(1, 5, 9))
plt.tight_layout()
plt.savefig('plt.png')
因此,在第一张图片中,它显示了当有足够的数据强制整数时图形的外观。大多数情况下会发生这种情况。
在第二张图片中,没有足够的数据来强制Y轴生成整数,因此它会创建浮点数。与“正确”输出相比,此版本中的图形似乎也宽一些。有什么想法吗?
数据量根据接受调查的人数而变化。有什么方法可以强制Y轴使用整数而不是默认为浮点数?
感谢您抽出宝贵的时间来帮助我。
最好, 克里斯
答案 0 :(得分:1)
首先创建一个最小的问题示例。
import numpy as np; np.random.seed(42)
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(4,1.7))
data = np.random.randint(1,9, size=52)
ax.hist(data, bins=np.arange(0,9)+0.5, ec="k")
plt.show()
现在,您可以通过告诉默认AutoLocator
仅使用整数来消除y轴上的小数位
ax.locator_params(axis='y', integer=True)
结果: