其他分享
首页 > 其他分享> > 《matplotlib学习指南》- 初始matplotlib

《matplotlib学习指南》- 初始matplotlib

作者:互联网

Task1 初识matplotlib

本章节知识点

import matplotlib.pyplot as plt
import numpy as np
import random

1. 创建两组数据

x = np.linspace(-3, 3, 50)

y1 = 2 * x + 1
y2 = x ** 2

2. 定义图像窗口并画图

  1. 在画图前使用plt.figure()定义一个图像窗口:
    编号为3; 大小为(8, 5);这两项参数可缺省。其中, num参数决定了程序运行后弹出的图像窗口名字。
  2. 接着,我们使用plt.plot画出(x ,y2)曲线;使用plt.plot画(x ,y1)曲线;
  3. 曲线的颜色属性(color)为红色
  4. 曲线的宽度(linewidth)为1.0
  5. 曲线的类型(linestyle)为虚线, 除了虚线外, 还可使用以下线性:’-’、’–’、’-.’、’:’ 。
    接着,我们使用plt.show()显示图像。
# 定义一个图像窗口
plt.figure()
# 分别绘制 y1, y2图像
plt.plot(x, y1)
plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--')
plt.show()

png

# 创建画布
fig, ax = plt.subplots()
ax.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
ax.plot(x, y2)
plt.show()

png

3. 添加图例

  1. 如果希望图例能够更加个性化,可通过以下方式更改:参数 loc 决定了图例的位置,比如参数 loc=‘upper right’ 表示图例将添加在图中的右上角。
    其中’loc’参数有多种,’best’表示自动分配最佳位置,其余的如下:
    ‘best’ : 0,
    ‘upper right’ : 1,
    ‘upper left’ : 2,
    ‘lower left’ : 3,
    ‘lower right’ : 4,
    ‘right’ : 5,
    ‘center left’ : 6,
    ‘center right’ : 7,
    ‘lower center’ : 8,
    ‘upper center’ : 9,
    ‘center’ : 10

3.1 添加图例 : 方式一

# 方式一 :
plt.plot(x, y1, label='linear line')
plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--', label='square line')
# 设置图例的位置在右上角
plt.legend(loc='upper right')
<matplotlib.legend.Legend at 0x2326e9bcf48>

png

3.2 添加图例 : 方式二

# l1, l2, 要以逗号结尾, 因为plt.plot() 返回的是一个列表
l1, = plt.plot(x, y1)
l2, = plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--')

# 设置图例
plt.legend(handles=[l1, l2, ], labels=['linear line', 'square line'], loc='upper right')
<matplotlib.legend.Legend at 0x23270ec0ac8>

png

4. 定义坐标轴范围

  1. 使用plt.xlim设置x坐标轴范围:(-1, 2);
  2. 使用plt.ylim设置y坐标轴范围:(-2, 3);
  3. 使用plt.xlabel设置x坐标轴名称:‘x’
  4. 使用plt.ylabel设置y坐标轴名称:‘y’
# 定义一个图像窗口
# num 是图像的唯一标识, figsize : 设置宽高
plt.figure(num=3, figsize=(8, 5))

plt.plot(x, y1, label='linear line')
plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--', label='square line')

plt.xlim((-1, 2))
plt.xlim((-2, 3))

plt.xlabel('X')
plt.ylabel('Y')
plt.show()

png

5. 设置坐标轴刻度

# 定义图像窗口
plt.figure(num=3, figsize=(8, 5))
# 绘制 x-y1 和 x-y2 的图像
plt.plot(x, y1, label='linear line')
plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--', label='square line')

# 设置图例显示, 必须设置图的 label , 图例才能显示出来
plt.legend(loc='upper right')

# 设置 x轴和y轴的范围
plt.xlim((-1, 2))
plt.ylim((-2, 3))

# 设置 x 轴和 y 轴的标签
plt.xlabel('X')
plt.ylabel('Y')

# 设置刻度
new_ticks = np.linspace(-1, 2, 5)
print(new_ticks)

plt.xticks(new_ticks)
# 将数值刻度替换为字符串刻度
plt.yticks([-2, -1.8, -1, 1.22, 3], [r'$really\ bad$', r'$bad$', r'$normal$', r'$good$', r'$really\ good$'])

plt.show()
[-1.   -0.25  0.5   1.25  2.  ]

png

6. 设置图像边框

# 绘制图像
plt.figure(num=3, figsize=(8, 5), )
plt.plot(x, y1, label='linear line')
plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--', label='square line')

# 获取坐标轴信息
ax = plt.gca()

# 取消右边框(设置右边框颜色为 none)
ax.spines['right'].set_color('none')
# 取消上边框
ax.spines['top'].set_color('none')
plt.show()

png

7. 移动x轴的的位置

# 绘制图像
plt.figure(num=3, figsize=(8, 5))
plt.plot(x, y2)
plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')

# 获取坐标轴信息
ax = plt.gca()
# 设置右边框为白色(不显示)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

# 移动x坐标轴刻度或者名称的位置
ax.xaxis.set_ticks_position('bottom')
# 设置边框位置: y=0的位置
ax.spines['bottom'].set_position(('data', 0))
# 移动y坐标轴或者名称的位置
ax.yaxis.set_ticks_position('left')
# 设置边框位置: x=0的位置
ax.spines['left'].set_position(('data', 0))
plt.show()

png

8. 在坐标轴上画图并标识点的位置

# 准备数据
x = np.linspace(-3, 3 , 50)
y = 2 * x + 1

# 绘制图像
plt.figure(num=1, figsize=(8,5))
plt.plot(x, y, color='blue', linewidth=1.0)

ax = plt.gca()
# 取消上边框和右边框
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')
# 移动x轴到y=0的位置
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left')
# 移动y轴到x=0的位置
ax.spines['left'].set_position(('data', 0))

# 标点
x0 = 1
y0 = 2 * x0 + 1
plt.scatter([x0, ] , [y0, ], s=50, color='r')
plt.show()

png

9. 绘制上海指定时段温度变化

# 准备数据
x = range(60)
# 随机生成 60 个范围在 15 ~ 18 的随机数
y_shanghai = [random.uniform(15,18) for i in x]
# 创建画布 (dpi = 图像每英寸长度内的像素点数)
plt.figure(figsize=(20,8), dpi=80)
plt.plot(x, y_shanghai)
plt.show()

png

10. 修改x刻度样式

plt.figure(figsize=(20,8),dpi=80)
# 设置中文字体
plt.rcParams['font.family'] = 'Microsoft YaHei'

# 生成数据
x = range(60)
y = [random.uniform(15,18) for i in x]
# 生成x轴刻度
x_label = ["11点{}分".format(i) for i in x]
# 设置x轴刻度
# 切片操作基本表达式:object[start_index:end_index:step]
plt.xticks(x[::5], x_label[::5])
plt.plot(x, y_shanghai)
plt.show()

png

11. 添加文字标题和xy轴的文字描述

x = range(60)
y_shanghai = [random.uniform(15,18) for i in x ]
plt.figure(figsize=(20,8), dpi=80)
x_label = ["11点{}分".format(i) for i in x]
plt.xticks(x[::5], x_label[::5])

plt.xlabel("时间变化")
plt.ylabel("温度变化")
plt.title("某城市一小时内每分钟的温度变化")
plt.plot(x, y_shanghai)
plt.show()

png

12. 添加新的折线

# 创建数据
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]
y_beijing = [random.uniform(10,14) for i in x]

# 创建画布
plt.figure(figsize=(20,8), dpi=80)
# 绘制图层
plt.plot(x, y_shanghai, color='r', linestyle='--')
plt.plot(x, y_beijing, color='b')

plt.show()

png

12. 显示图例并修改刻度

# 创建数据
x = range(60)
x_label = ["11点{}分".format(i) for i in x]
y_shanghai = [random.uniform(15,18) for i in x]
y_beijing = [random.uniform(10,14) for i in x]

# 设置显示中文
plt.rcParams['font.family'] = 'Microsoft YaHei'
# 创建画布
plt.figure(figsize=(20,8), dpi=80)
# 绘制图层
plt.plot(x, y_shanghai, color='r', linestyle='--', label='上海')
plt.plot(x, y_beijing, color='b', label='北京')
# 设置刻度
plt.xticks(x[::5], x_label[::5])
# 设置图例
plt.legend(loc='best')
#添加描述信息
plt.xlabel("时间变化")
plt.ylabel("温度变化")
plt.title("上海,北京两地11点到12点每分钟的温度变化状况")
plt.show()

png

13. 作业

1. 作业一 :

# 生成数据
x = np.linspace(-3,3,50)
y = x - 1

# 绘制图形
plt.figure(figsize=(8,5), num=2)
# 设置横坐标范围
plt.xlim((-1,2))
# 设置纵坐标范围
plt.ylim((-2,1))

# 修改xy坐标轴位置到 0
ax = plt.gca()
# 清除右侧和上方的边框
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 移动x轴和y轴的位置到 0 点
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))

# 绘制图像
plt.plot(x, y, color='r', linestyle='--')
# 设置刻度
# plt.xticks([-1,-0.5,1], [r'$bad$', r'$normal$', r'$good$'])
plt.xticks([-1,-0.5,1], ['bad', 'normal', 'good'])

plt.show()

png

2. 作业二

# 创建数据
y1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y2 = [1,0,3,1,2,2,2,3,1,1,1,1,1,2,1,1,2,3,2,2]

x = range(11,31)
x_label = ["{}岁".format(i) for i in x]

# 定义图像窗口
plt.figure(figsize=(20,5), dpi=80)
# 设置中文字体
plt.rcParams['font.family'] = 'Microsoft YaHei'
# 设置y轴范围
plt.ylim((0,6))
plt.xlim((11,29))
# 设置x轴刻度
plt.xticks(x, x_label)
# 设置标题以及详细信息
plt.xlabel('年龄')
plt.ylabel('每年交的朋友个数')
plt.title('11~30岁每年交的朋友数')

# 绘制图像
plt.plot(x, y1, color='r', label='自己')
plt.plot(x, y2, color='b', label='同桌')
# 显示图例
plt.legend(loc='best')

plt.show()

png

标签:学习指南,plot,plt,color,matplotlib,set,设置,ax,初始
来源: https://blog.csdn.net/weixin_40040107/article/details/120804380