Matplotlib之绘制两种函数

提示:本文使用python的matplotlib库完成,绘制x轴区间在[-5,5]的两种函数,并添加了文本,移动了中心坐标轴进行美化

题目

在一张坐标轴上生成两种任意函数的-5<=x<=5区间的图像

实现步骤

1、导入相关库和函数包,配置好中文标签和负号显示

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['simhei']   #用于正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False     #用于正常显示负号

2、创建数据和窗口,定义x变量范围和两个函数y1、y2

#创建数据,定义 x 变量的范围 (-5,5) 数量 50
x = np.linspace(-5, 5, 50)
y1 = x**2
y2 = x**3
#创建figure窗口并指定大小
plt.figure(num=1,figsize=(8,5))

3、绘制函数图像,设置坐标轴范围、名称、刻度

# Figure 并指定大小
plt.figure(num=1, figsize=(8,5))
# 绘制 y1=x^2和y2=x^3的图像,设置 color 为 red,线宽度是 1,线的样式是 --和-
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
plt.plot(x,y2,color='blue',linewidth=1.0,linestyle='-')
# 设置 x,y 轴的范围
plt.xlim(-5,5)
plt.ylim(-5,5)
# 设置坐标轴刻度线
# Tick X和Y 范围 (-5,5),Tick Label刻度数量 11 个
new_ticks = np.linspace(-5,5,11)
plt.xticks(new_ticks)
plt.yticks(new_ticks)

4、移动坐标轴,绘制十字坐标系,可以更直观的表现两种函数

# 设置坐标轴 gca() 获取坐标轴信息
ax = plt.gca()
# 使用.spines设置边框,去除边框颜色
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 移动坐标轴,将 bottom 即是 x 坐标轴设置到 y=0 的位置 
# 将 left 即是 y 坐标轴设置到 x=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))

5、设置标题和函数公式,最后显示图像

# 设置标签
ax.set_title('绘制两种函数的折线图',fontsize=14)
plt.text(2.3, 4, 'y1 = x^2',fontsize=14,color='r')
plt.text(0.5, 3, 'y2 = x^3',fontsize=14,color='b')
# 显示图像
plt.show()

完整代码:

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['simhei']   #用于正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False     #用于正常显示负号
# 定义 x 变量的范围 (-3,3) 数量 50
x = np.linspace(-3, 3, 50)
y1 = x**2
y2 = x**3

# Figure 并指定大小
plt.figure(num=1, figsize=(8,5))
# 绘制 y1=x^2和y2=x^3的图像,设置 color 为 red,线宽度是 1,线的样式是 --和-
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
plt.plot(x,y2,color='blue',linewidth=1.0,linestyle='-')
# 设置 x,y 轴的范围以及 label 标注
plt.xlim(-5,5)
plt.ylim(-5,5)

# 设置坐标轴刻度线
# Tick X和Y 范围 (-5,5) Tick Label刻度数量 11 个
new_ticks = np.linspace(-5,5,11)
plt.xticks(new_ticks)
plt.yticks(new_ticks)
# Tick Y 范围(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 别名(下面的英文)
# 设置坐标轴 gca() 获取坐标轴信息
ax = plt.gca()
# 使用.spines设置边框:x轴;将右边颜色设置为 none。
# 使用.set_position设置边框位置:y=0的位置;(位置所有属性:outward,axes,data)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

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

# 设置标签
ax.set_title('绘制两种函数的折线图',fontsize=14)
plt.text(2.3, 4, 'y1 = x^2',fontsize=14,color='r')
plt.text(0.2, 3, 'y2 = x^3',fontsize=14,color='b')
# 显示图像
plt.show()

运行结果:
在这里插入图片描述

总结

1、画布中无法显示中文和负号
解决方法:
plt.rcParams()函数,通过rc配置文件来自定义图形的各种默认属性

plt.rcParams['font.sans-serif'] = ['simhei']   #用于正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False     #用于正常显示负号

2、坐标轴无法显示完整刻度,只显示偶数刻度而不显示奇数刻度
解决方法:
根据要求设置(-5,5)之间的整数坐标,刻度个数为11个

扫描二维码关注公众号,回复: 15487976 查看本文章
new_ticks = np.linspace(-5,5,11)
plt.xticks(new_ticks)

3、如何移动坐标轴
解决方法:
ax.spines[‘bottom’]获取底部的轴,通过set_position方法,设置底部轴的位置
例如:ax.spines[‘bottom’].set_position((‘data’,0))
该行代码表示设置底部轴移动到竖轴的0坐标位置,设置left的方法相同

猜你喜欢

转载自blog.csdn.net/weixin_51380854/article/details/129810974