0%

Python数据科学_6_Matplotlib绘图基础

1
2
3
4
5
6
7
import numpy as np
import matplotlib.pyplot as plt

# 由于plt默认字体是不支持显示中文的
# 所以我们需要对其默认字体进行修改,这里我们修改为黑体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

第一个图像的绘制

1
2
3
4
5
6
7
# 绘制y=sin(x)在-2*np.pi~2*np.pi
x = np.linspace(-2*np.pi, 2*np.pi, 100)
y = np.sin(x)

# 绘制折线图
plt.plot(x, y, color='r')
plt.show()

output_2_0_202303092109

绘制心线图

第一幅图像

1_202303092109

1
2
3
4
# 二次根号:np.sqrt()
# 幂值: **
x = np.linspace(-np.pi/2, np.pi/2, 1000)
y = (np.sqrt(np.cos(x)) * np.cos(200*x) + np.sqrt(np.abs(x)) - 0.7) * (4 - x**2)**0.01
1
2
3
4
# 修改画布大小
plt.figure(figsize=(5, 5))
plt.plot(x, y, color='r')
plt.show()


output_7_0_202303092109

第二幅图像

2_202303092109

1
2
3
t = np.linspace(0, 360, 1000)
x = 16 * (np.sin(t)) ** 3
y = 13 * np.cos(t) - 5 * np.cos(2*t) - 2 * np.cos(3*t) - np.cos(4*t)
1
2
plt.plot(x, y, color='r')
plt.show()

output_11_0_202303092109

给图像添加关键的信息

构建数据

1
2
3
4
# 绘制y=sin(x)在-2*np.pi~2*np.pi
x = np.linspace(-2*np.pi, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)

绘制图像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 设置画布属性
# figsize: 设置画布的大小
# dpi: 设置画布的分辨率,分辨率越高图像渲染速度越慢,图像越清晰
plt.figure(figsize=(10, 5), dpi=900)
# 给图像添加标题
plt.title('函数y=sin(x)和函数y=cos(x)的图像')
plt.plot(x, y1, color='b') # 绘制折线图
plt.plot(x, y2, color='r')
plt.scatter(0, 1, color='black') # 绘制散点图
# 给图像添加图例
plt.legend(['y=sinx', 'y=cosx'])
# 添加x轴标签
plt.xlabel('x')
# 添加y轴标签
plt.ylabel('y')
# 修改x轴刻度
plt.xlim(-8, 8)
# 修改y轴刻度
plt.ylim(-1.2, 1.2)
# 设置网格
plt.grid()
# 设置文字标记内容
# x: 绘制文本的横坐标点
# y: 绘制文本的纵坐标点
# s: 绘制的文本内容
plt.text(x=0, y=1.1, s='y=cosx的最大值')
plt.savefig('myplot.jpg')
plt.show()
# 保存函数的操作,必须放在显示图像的操作前面进行
# 否则保存的图像是全黑的
# plt.savefig('myplot.png')


output_16_0_202303092109

其他图形的绘制

散点图

1
2
3
4
5
6
plt.figure(figsize=(10, 5), dpi=900)
# s: 代表的是点的大小
# c: 代表的是点的颜色
# marker: 代表点的类型,形状
plt.scatter(x, y1, s=10, c='r', marker='<')
plt.show()


output_19_0_202303092109

柱状图

1
2
3
4
5
6
7
8
9
plt.figure(figsize=(10, 5), dpi=900)
# 每周商店的销售量
list1 = [70, 80, 100, 88, 90, 120, 140]
labels = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']

# width: 每根柱子的宽度
# color: 柱子的颜色
plt.bar(labels, list1, width=0.5, color='#ffd700')
plt.show()

output_21_0_202303092109

饼状图

1
2
3
4
5
6
plt.figure(figsize=(10, 5), dpi=900)
# explode: 每个扇形区域离中心点的距离
# labels: 每个扇形区域对应的标签
# autopct: 显示每个扇形区域所占的百分比,并且定义显示格式
plt.pie(list1, explode=[0.02]*7, labels=labels, autopct="%.1f%%")
plt.show()


output_23_0_202303092109

箱线图

1
2
data1 = np.random.randint(low=5, high=30, size=(100,))
data2 = np.random.randint(low=7, high=20, size=(100,))
1
2
3
plt.figure(figsize=(10, 5), dpi=900)
plt.boxplot([data1, data2])
plt.show()


output_26_0_202303092109

直方图

1
data3 = np.random.randint(low=5, high=100, size=(1000,))
1
2
3
4
5
6
plt.figure(figsize=(10, 5), dpi=900)
# bins: 切分的区间段数
# width: 生成直方图的柱子宽度
# color: 生成直方图的柱子颜色
plt.hist(data3, bins=5, width=10, color='#bcbd22')
plt.show()


output_29_0_202303092109

-------------本文结束感谢您的阅读-------------