和大(小)师(白)一起学Python(十)数据图绘制
本文参考《深度学习教科书》石川聪彦 著,陈欢 译
所有代码运行时请删除“%matplotlib inline”
12.1 折线图
标识 | 颜色 |
---|---|
o | 圆形 |
s | 正方形 |
p | 五角形 |
+ | 加号 |
D | 菱形 |
颜色
b | 蓝色 |
---|---|
g | 绿色 |
r | 红色 |
c | 青色 |
m | 紫红色 |
y | 黄色 |
k | 黑色 |
w | 白色 |
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
days = np.arange(1, 11)
weight = np.array([10, 14, 18, 20, 18, 16, 17, 18, 20, 17])
# 对显示进行设置
plt.ylim([0, weight.max()+1])
plt.xlabel("days")
plt.ylabel("weight")
# 请使用黑色圆圈标识绘制并生成蓝色虚线的折线图
plt.plot(days, weight, linestyle="--", color="b", marker="o", markerfacecolor="k")
plt.show()
12.2 条形图
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = [1, 2, 3, 4, 5, 6]
y = [12, 41, 32, 36, 21, 17]
labels = ["Apple", "Orange", "Banana", "Pineapple", "Kiwifruit", "Strawberry"]
# 请生成条形图,并设置横轴的标签
plt.bar(x, y, tick_label= labels)
plt.show()
堆积图
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = [1, 2, 3, 4, 5, 6]
y1 = [12, 41, 32, 36, 21, 17]
y2 = [43, 1, 6, 17, 17, 9]
labels = ["Apple", "Orange", "Banana", "Pineapple", "Kiwifruit", "Strawberry"]
# 请生成堆叠条形图,并设置横轴的标签
plt.bar(x, y1, tick_label=labels)
plt.bar(x, y2, bottom=y1)
# 还可以采用如下方式设置系统标签
plt.legend(("y1", "y2"))
plt.show()
12.3 直方图
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
np.random.seed(0)
data = np.random.randn(10000)
# 请生成 bin 的数量为 100 的直方图
plt.hist(data, bins=100)
plt.show()
归一化处理
plt.hist(data, bins=100, normed=True)
累积直方图
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
np.random.seed(0)
data = np.random.randn(10000)
# 请生成经过归一化处理的 bin 的数量为 100 的累积直方图
plt.hist(data, bins=100, normed=True, cumulative=True)
plt.show()
12.4 散点图
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
np.random.seed(0)
x = np.random.choice(np.arange(100), 100)
y = np.random.choice(np.arange(100), 100)
# 请将散点图标识的类型设置为正方形,颜色设置为黑色
plt.scatter(x, y, marker="s", color="k")
plt.show()
根据数据值的变化绘制不同大小的标识
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
np.random.seed(0)
x = np.random.choice(np.arange(100), 100)
y = np.random.choice(np.arange(100), 100)
z = np.random.choice(np.arange(100), 100)
# 请根据 z 中数据值的变化绘制不同大小的标识
plt.scatter(x, y, s=z)
plt.show()
绘制不同浓度色系
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
np.random.seed(0)
x = np.random.choice(np.arange(100), 100)
y = np.random.choice(np.arange(100), 100)
z = np.random.choice(np.arange(100), 100)
# 请根据 z 中数据值的变化,绘制不同浓度的蓝色系标识
plt.scatter(x, y, c=z, cmap="Blues")
# 请显示颜色栏
plt.colorbar()
plt.show()
12.5 饼状图
import matplotlib.pyplot as plt
%matplotlib inline
data = [60, 20, 10, 5, 3, 2]
labels = ["Apple", "Orange", "Banana", "Pineapple", "Kiwifruit", "Strawberry"]
explode = [0, 0, 0.1, 0, 0, 0]
# 请在 data 中添加 labels 的标签,并对突出显示 Banana 的饼形图进行可视化处理
plt.pie(data, labels=labels, explode=explode)
plt.axis("equal")
plt.show()
12.6 3D图标
import numpy as np
import matplotlib.pyplot as plt
# 导入进行 3D 绘制时必须使用的软件库
from mpl_toolkits.mplot3d import Axes3D
%matplotlib inline
x = y = np.linspace(-5, 5)
X, Y = np.meshgrid(x, y)
Z = np.exp(-(X**2 + Y**2)/2) / (2*np.pi)
# 创建 Figure 对象
fig = plt.figure(figsize=(6, 6))
# 请生成子图 ax
ax = fig.add_subplot(1, 1, 1, projection="3d")
# 绘制曲面并显示结果
ax.plot_surface(X, Y, Z)
plt.show()