限制直方图上显示的频率

0 投票
1 回答
662 浏览
提问于 2025-04-17 22:37

我正在使用matplotlib来绘制直方图,下面是我的代码:

plt.hist(data["Main Total"],alpha=.7)
plt.title("Total marks Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()

这段代码生成了一个直方图,如下所示:

enter image description here

但是当我添加了 histtype=stepfilled 之后,如下:

plt.hist(data["Main Total"],histtype="stepfilled", alpha=.7)

它生成了:

enter image description here

使用 stepfilled 时,为什么图表中显示的频率最大值会非常高,尽管没有任何数据的频率超过20,而第一个直方图则正确显示了这一点。

这里是可以重现这个问题的代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
import statsmodels.api as sm
from numpy.random import randn
import matplotlib as mpl
import seaborn as sns

sns.set_color_palette("deep", desat=.6)
mpl.rc("figure", figsize=(8, 4))

data=pd.read_csv("output11cs.csv")
df3=data[['Total','Total.1','Total.2','Total.3','Total.4','Total.5','Total.6','Total.7']]
data["Main Total"]=df3.sum(axis=1)
data = data.dropna()
data.reset_index(drop=True)
plt.hist(data["Main Total"],alpha=.7)
plt.title("Total marks Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()

这里有一个 output11cs.csv 文件。它只有 90 行。

1 个回答

1

正如我上面评论中提到的,如果你把matplotlib升级到1.3.x版本,这个方法应该能正常工作。不过,如果你的系统不允许升级,你也可以通过调整直方图的“线宽”来达到相同的效果:

plt.hist(data["Main Total"], alpha=.7, linewidth=0)
plt.title("Total marks Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency");

在这里输入图片描述

撰写回答