一:
import numpy as np
from scipy.stats import beta
import matplotlib.pyplot as plt
from scipy import stats
colors = [
'green',
'red',
'orange',
'brown',
'pink',
'gray',
'olive',
'blue',
'purple',
]
x = np.linspace(0, 1, 1001)[1:-1]
fig, ax = plt.subplots()
ks = [8, 20, 80]
ns = [20, 50, 200]
for i in range(len(ks)):
a = ks[i]
b = ns[i] - ks[i]
y = stats.beta(a, b).pdf(x)
plt.plot(x, y, c=colors[i], label='n={}'.format(ns[i]), linewidth='2.25')
pa = (a - 1) / (a + b - 2)
y_max = beta.pdf(pa, a, b)
plt.plot(pa, y_max, c=colors[i], marker='o', markersize=5)
ax.annotate(r'a', xy=(pa, y_max), xytext=(pa + 0.02, y_max + 0.04),
arrowprops=dict(facecolor=colors[i], arrowstyle='-'),
fontsize=18)
plt.xlabel(r'xlabel', fontsize=18)
plt.ylabel(r'ylabel', fontsize=18)
plt.title('Title.', fontsize=18)
plt.legend(loc=0, fontsize=18)
plt.tick_params(labelsize=18)
plt.show()
二:seaborn
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 讀取文件
dataset = pd.read_csv('xxx.txt', index_col=None)
# 設置風格
sns.set_style("white")
sns.set_context("paper", font_scale=1.5, rc={"lines.linewidth": 2.25})
sns.distplot(dataset["expectation"], hist=False, kde=True, rug=True,
rug_kws={'color': 'y', 'lw': 0.5, 'alpha': 0.5, 'height': 0.1}, # 設置數據頻率分佈顏色#控制是否顯示觀測的小細條(邊際毛毯)
kde_kws={"color": "y", "lw": 2.25, 'linestyle': '--'}, # 設置密度曲線顏色,線寬,標註、線形,#控制是否顯示核密度估計圖
label='legend1')
sns.distplot(dataset["score"], hist=False, bins=6, kde=True, rug=True,
rug_kws={'color': 'g', 'lw': 0.5, 'alpha': 0.5},
kde_kws={"color": "g", "lw": 2.25, 'linestyle': '--'},
label='legend2')
plt.xlabel('xlabel', fontsize=18)
plt.ylabel('ylabel', fontsize=18)
plt.title('Title.', fontsize=18)
plt.legend(loc=0, fontsize=18)
plt.tick_params(labelsize=18)
plt.show()