第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用類似 KDnuggets 樣式的 PDF 繪制比較箱線圖

如何使用類似 KDnuggets 樣式的 PDF 繪制比較箱線圖

慕容708150 2023-05-16 09:48:17
在閱讀KDnuggets 文章中的了解箱線圖時。我找到了帶有概率密度函數(shù)的 Boxplot 的詳細圖 (pdf)我正在嘗試繪制比較箱線圖和概率密度函數(shù)(pdf),如下圖所示我知道單獨繪制基本箱線圖和pdf 。我對可視化的了解是最少的。我不是在問上面情節(jié)的精確復制,非常感謝有細節(jié)的類似情節(jié)。我樂于接受新的想法和方法,并希望在開始之前試探一下如果是,是否可以用 Python 繪制上面的圖,將使用哪個包來繪制上面的圖?有人可以闡明用 Python 繪制上述圖嗎?我很樂意收到您的任何線索。
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻1871條經(jīng)驗 獲得超13個贊

這是重新創(chuàng)建情節(jié)的圖形元素的嘗試。使用一些隨機數(shù)據(jù)而不是完美的正態(tài)分布,因此您可以插入自己的數(shù)據(jù)。(要獲得更完美的曲線,請生成更多數(shù)量的樣本。)


from matplotlib import pyplot as plt

import numpy as np

import seaborn as sns


x = np.random.normal(0, 1, 1000)

mean = x.mean()

std = x.std()

q1, median, q3 = np.percentile(x, [25, 50, 75])

iqr = q3 - q1


fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)


medianprops = dict(linestyle='-', linewidth=2, color='yellow')

sns.boxplot(x=x, color='lightcoral', saturation=1, medianprops=medianprops,

            flierprops={'markerfacecolor': 'mediumseagreen'}, whis=1.5, ax=ax1)


ticks = [mean + std * i for i in range(-4, 5)]

ticklabels = [f'${i}\\sigma$' for i in range(-4, 5)]

ax1.set_xticks(ticks)

ax1.set_xticklabels(ticklabels)

ax1.set_yticks([])

ax1.tick_params(labelbottom=True)

ax1.set_ylim(-1, 1.5)

ax1.errorbar([q1, q3], [1, 1], yerr=[-0.2, 0.2], color='black', lw=1)

ax1.text(q1, 0.6, 'Q1', ha='center', va='center', color='black')

ax1.text(q3, 0.6, 'Q3', ha='center', va='center', color='black')

ax1.text(median, -0.6, 'median', ha='center', va='center', color='black')

ax1.text(median, 1.2, 'IQR', ha='center', va='center', color='black')

ax1.text(q1 - 1.5*iqr, 0.4, 'Q1 - 1.5*IQR', ha='center', va='center', color='black')

ax1.text(q3 + 1.5*iqr, 0.4, 'Q3 + 1.5*IQR', ha='center', va='center', color='black')

# ax1.vlines([q1 - 1.5*iqr, q1, q3, q3 + 1.5*iqr], 0, -2, color='darkgrey', ls=':', clip_on=False, zorder=0)


sns.kdeplot(x, ax=ax2)

kdeline = ax2.lines[0]

xs = kdeline.get_xdata()

ys = kdeline.get_ydata()


ylims = ax2.get_ylim()

ax2.fill_between(xs, 0, ys, color='mediumseagreen')

ax2.fill_between(xs, 0, ys, where=(xs >= q1 - 1.5*iqr) & (xs <= q3 + 1.5*iqr), color='skyblue')

ax2.fill_between(xs, 0, ys, where=(xs >= q1) & (xs <= q3), color='lightcoral')

# ax2.vlines([q1 - 1.5*iqr, q1, q3, q3 + 1.5*iqr], 0, 100, color='darkgrey', ls=':', zorder=0)

ax2.set_ylim(0, ylims[1])

plt.show()

http://img1.sycdn.imooc.com//6462e1020001540806570309.jpg

一些評論:

  • 中位數(shù)和均值通常不重合,因此 0 西格瑪可能會偏離中線。

  • Matplotlib 在最接近計算的Q1 - 1.5 IQR和 的數(shù)據(jù)點繪制胡須Q3 + 1.5 IQR,因此當點數(shù)不多時,胡須的位置可能會有點偏離。

  • 對于真實數(shù)據(jù),分布很少看起來像完美的鐘形曲線。

以下是 100 萬個樣本的示例:

http://img1.sycdn.imooc.com//6462e10e0001ebe806570273.jpg

查看完整回答
反對 回復 2023-05-16
  • 1 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號