我使用matplotlib绘制直方图,我有以下代码:
plt.hist(data["Main Total"],alpha=.7)
plt.title("Total marks Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()
这产生如下的直方图:
但是当我按以下方式添加histtype=stepfilled
时
plt.hist(data["Main Total"],histtype="stepfilled", alpha=.7)
它产生:
使用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 file。它只有90
行
答案 0 :(得分:1)
正如我在上面的评论中所指出的,如果你将matplotlib升级到1.3.x,我认为这样可以正常工作,但是如果你在一个无法升级的系统上,你也可以更改&#34 ;线宽"直方图得到相同的效果:
plt.hist(data["Main Total"], alpha=.7, linewidth=0)
plt.title("Total marks Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency");