下面我们给出一些常见的图表,如果想穷尽所有的图表,这是十分困难的,这里就一些常见的图表进行简要的介绍。
基础:1维序列、点
我们之前提到过的


![Uploading Paste_Image_867009.png . . .]
演示代码
常见的:

柱状图演示代码

填充演示代码
2维数组和阵列



矢量图

数据分布

Detailed Example(部分例子)
输入数据:1维序列
上一节我们简单介绍了ax.plot()和ax.scatter如何绘制点和线。下一节我们会对一些没有提到的选项(markers,colors,linestyles等)进行介绍。这一节我们尽量罗列不同的matplotlib图表类型。
柱状图Bar Plot:ax.bar(...) 、ax.hbar(...)横向。

柱状图及参数
柱状图是常见的plot图表,ax.bar(...)可以绘制矩形,默认只需要两个参数x,y来表示x轴起始位置和柱体的高度,默认宽度可以省略。
np.random.seed(1)
x = np.arange(5)
y = np.random.randn(5)
fig, axes = plt.subplots(ncols=2, figsize=plt.figaspect(1./2))#两列子图,预定义图像大小
vert_bars = axes[0].bar(x, y, color='lightblue', align='center')#居中
horiz_bars = axes[1].barh(x, y, color='lightblue', align='center')
# I'll also introduce axhline & axvline to draw a line all the way across the axes 通过axhline&axvline可以绘制一条穿着坐标轴的直线
# This can be a quick-n-easy way to draw an axis "spine".
axes[0].axhline(0, color='gray', linewidth=2)
axes[1].axvline(0, color='gray', linewidth=2)
plt.show()

ax.held(...)的返回值是什么呢?在Matplotlib plotting方法返回Artist或者artist序列的集合。我们就拿上图1作为例子,ax.bar返回对象是一个容器,我们要处理的是容器内对象(bars中的bar)。
fig, ax = plt.subplots()
vert_bars = ax.bar(x, y, color='lightblue', align='center')
# We could have also done this with two separate calls to `ax.bar` and numpy boolean indexing.
for bar in vert_bars:
if bar.xy[1] < 0:#如果y小于0
#设置为不同的颜色
bar.set(edgecolor='darkred', color='salmon', linewidth=3)
plt.show()

上色
注意:plotting方法返回的artists对象是已经绘制的。后面会用到它,特别是添加彩色边框时。
填充区域:ax.fill(x,y),fill_between(...),etc

这些填充功能中,使用频率最高的应该是ax.fill_between(...),它填充的是给定的y值到y=0之间。
np.random.seed(1)
y = np.random.randn(100).cumsum()
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots()
ax.fill_between(x, y, color='lightblue')
plt.show()

ax.fill_between也可以用来填充两个曲线之间。非常适合用来演示各种闭合曲线。
下面有个不错的例子
x = np.linspace(0, 10, 200)
#斜率为2的直线
y1 = 2 * x + 1
#另一个直线
y2 = 3 * x + 1.2
#另一个曲线
y_mean = 0.5 * x * np.cos(2*x) + 2.5 * x + 1.1
fig, ax = plt.subplots()
#绘制填充区域y1-y2之间。黄色
ax.fill_between(x, y1, y2, color='yellow')
# 绘制他们之间的曲线
ax.plot(x, y_mean, color='black')
plt.show()

填充曲线
练习题2.1
结合刚刚学到的bar和fill_between,完成下图:

下面给出数据源:
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(1)
# 产生数据...
y_raw = np.random.randn(1000).cumsum() + 15
x_raw = np.linspace(0, 24, y_raw.size)
# 获取每100个样本的统计信息
x_pos = x_raw.reshape(-1, 100).min(axis=1)
#平均值
y_avg = y_raw.reshape(-1, 100).mean(axis=1)
#标准差
y_err = y_raw.reshape(-1, 100).ptp(axis=1)
bar_width = x_pos[1] - x_pos[0]
# Make a made up future prediction with a fake confidence
x_pred = np.linspace(0, 30)
y_max_pred = y_avg[0] + y_err[0] + 2.3 * x_pred
y_min_pred = y_avg[0] - y_err[0] + 1.2 * x_pred
# Just so you don't have to guess at the colors...
barcolor, linecolor, fillcolor = 'wheat', 'salmon', 'lightblue'
# Now you're on your own!