【发布时间】:2016-12-24 19:23:51
【问题描述】:
我正在使用 matplotlib 绘制数据集的分布,并希望覆盖置信区间的垂直线。
密度图看起来不错,但我看不到线。有什么想法吗?
# Get data
import urllib.request as request
request.urlretrieve('http://seanlahman.com/files/database/baseballdatabank-master_2016-03-02.zip', "baseballdatabank-master_2016-03-02.zip")
from zipfile import ZipFile
zip = ZipFile('baseballdatabank-master_2016-03-02.zip')
zip.extractall()
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
batting_df = pd.read_csv("baseballdatabank-master\core\Batting.csv")
batting_df = batting_df[batting_df['AB'] > 20]
batting_df['batting_average'] = batting_df['H'] / batting_df['AB']
# Plot distribution
batting_averages = batting_df['batting_average'].dropna()
batting_averages.plot.kde()
# Plot confidence interval
import scipy.stats
import numpy as np, scipy.stats as st
stderr = st.sem(batting_averages)
interval1 = (batting_averages.mean() - stderr * 1.96, batting_averages.mean() + stderr * 1.96)
plt.plot(interval1[0], 12)
plt.show()
我试图在第一个间隔的 x 坐标处绘制垂直线,该坐标以平均值为中心。我将 12 作为 y 坐标传递,因为这是 y 轴上显示的最大值。
【问题讨论】:
-
plot的 y 参数是单一的。你需要你的 kde x 作为第一个参数,你的区间作为 y... -
您能expand your example 提供您拥有的那种数据吗?
-
找到了答案,在那个情节中需要两个点作为参数。
标签: pandas matplotlib scipy