mirror of
https://github.com/Estom/notes.git
synced 2026-02-13 23:35:48 +08:00
matplotlib & pandas
This commit is contained in:
97
Python/matplotlab/gallery/statistics/boxplot.md
Normal file
97
Python/matplotlab/gallery/statistics/boxplot.md
Normal file
@@ -0,0 +1,97 @@
|
||||
# 箱形图中的艺术
|
||||
|
||||
此示例演示如何使用各种kwargs完全自定义箱形图。第一个图演示了如何删除和添加单个组件(请注意,平均值是默认情况下未显示的唯一值)。第二个图展示了如何定制艺术家的风格。它还演示了如何将胡须的极限设置为特定的百分位数(右下轴)
|
||||
|
||||
关于箱形图及其历史的一般参考可以在这里找到:http://vita.had.co.nz/papers/boxplots.pdf
|
||||
|
||||
```python
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
# fake data
|
||||
np.random.seed(19680801)
|
||||
data = np.random.lognormal(size=(37, 4), mean=1.5, sigma=1.75)
|
||||
labels = list('ABCD')
|
||||
fs = 10 # fontsize
|
||||
```
|
||||
|
||||
演示如何切换不同元素的显示:
|
||||
|
||||
```python
|
||||
fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(6, 6), sharey=True)
|
||||
axes[0, 0].boxplot(data, labels=labels)
|
||||
axes[0, 0].set_title('Default', fontsize=fs)
|
||||
|
||||
axes[0, 1].boxplot(data, labels=labels, showmeans=True)
|
||||
axes[0, 1].set_title('showmeans=True', fontsize=fs)
|
||||
|
||||
axes[0, 2].boxplot(data, labels=labels, showmeans=True, meanline=True)
|
||||
axes[0, 2].set_title('showmeans=True,\nmeanline=True', fontsize=fs)
|
||||
|
||||
axes[1, 0].boxplot(data, labels=labels, showbox=False, showcaps=False)
|
||||
tufte_title = 'Tufte Style \n(showbox=False,\nshowcaps=False)'
|
||||
axes[1, 0].set_title(tufte_title, fontsize=fs)
|
||||
|
||||
axes[1, 1].boxplot(data, labels=labels, notch=True, bootstrap=10000)
|
||||
axes[1, 1].set_title('notch=True,\nbootstrap=10000', fontsize=fs)
|
||||
|
||||
axes[1, 2].boxplot(data, labels=labels, showfliers=False)
|
||||
axes[1, 2].set_title('showfliers=False', fontsize=fs)
|
||||
|
||||
for ax in axes.flatten():
|
||||
ax.set_yscale('log')
|
||||
ax.set_yticklabels([])
|
||||
|
||||
fig.subplots_adjust(hspace=0.4)
|
||||
plt.show()
|
||||
```
|
||||
|
||||

|
||||
|
||||
演示如何自定义显示不同的元素:
|
||||
|
||||
```python
|
||||
boxprops = dict(linestyle='--', linewidth=3, color='darkgoldenrod')
|
||||
flierprops = dict(marker='o', markerfacecolor='green', markersize=12,
|
||||
linestyle='none')
|
||||
medianprops = dict(linestyle='-.', linewidth=2.5, color='firebrick')
|
||||
meanpointprops = dict(marker='D', markeredgecolor='black',
|
||||
markerfacecolor='firebrick')
|
||||
meanlineprops = dict(linestyle='--', linewidth=2.5, color='purple')
|
||||
|
||||
fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(6, 6), sharey=True)
|
||||
axes[0, 0].boxplot(data, boxprops=boxprops)
|
||||
axes[0, 0].set_title('Custom boxprops', fontsize=fs)
|
||||
|
||||
axes[0, 1].boxplot(data, flierprops=flierprops, medianprops=medianprops)
|
||||
axes[0, 1].set_title('Custom medianprops\nand flierprops', fontsize=fs)
|
||||
|
||||
axes[0, 2].boxplot(data, whis='range')
|
||||
axes[0, 2].set_title('whis="range"', fontsize=fs)
|
||||
|
||||
axes[1, 0].boxplot(data, meanprops=meanpointprops, meanline=False,
|
||||
showmeans=True)
|
||||
axes[1, 0].set_title('Custom mean\nas point', fontsize=fs)
|
||||
|
||||
axes[1, 1].boxplot(data, meanprops=meanlineprops, meanline=True,
|
||||
showmeans=True)
|
||||
axes[1, 1].set_title('Custom mean\nas line', fontsize=fs)
|
||||
|
||||
axes[1, 2].boxplot(data, whis=[15, 85])
|
||||
axes[1, 2].set_title('whis=[15, 85]\n#percentiles', fontsize=fs)
|
||||
|
||||
for ax in axes.flatten():
|
||||
ax.set_yscale('log')
|
||||
ax.set_yticklabels([])
|
||||
|
||||
fig.suptitle("I never said they'd be pretty")
|
||||
fig.subplots_adjust(hspace=0.4)
|
||||
plt.show()
|
||||
```
|
||||
|
||||

|
||||
|
||||
## 下载这个示例
|
||||
|
||||
- [下载python源码: boxplot.py](https://matplotlib.org/_downloads/boxplot.py)
|
||||
- [下载Jupyter notebook: boxplot.ipynb](https://matplotlib.org/_downloads/boxplot.ipynb)
|
||||
Reference in New Issue
Block a user