Python绘图Matplotlib手册

本文详细介绍了如何使用Python的Matplotlib库进行绘图,包括基本作图、颜色设置、坐标轴调整、图例添加、特殊点标记等,并展示了参数详细设置。适合初学者和进阶者了解Matplotlib的高级用法。
摘要由CSDN通过智能技术生成

Python绘图Matplotlib手册

作图函数

  1. 使用pip install matplotlib安装绘图库。
  2. 作图函数

(1)使用默认参数作图

import numpy as np 
import matplotlib.pyplot as plt 
# 生成-π到+π的256个元素的等差数列
X = np.linspace(-np.pi, np.pi, 256, endpoint=True) 
C, S = np.cos(X), np.sin(X) # 生成X的正弦余弦函数赋值给C, S
plt.plot(X, C) # 画图
plt.plot(X, S) 
plt.show() # 展示图像

image-20220924085421259

(2)改变颜色和线宽

import numpy as np 
import matplotlib.pyplot as plt 
X = np.linspace(-np.pi, np.pi, 256, endpoint=True) 
C, S = np.cos(X), np.sin(X) 
plt.figure(figsize=(10, 6), dpi=80) # 设置图标宽:高=10:6,dpi=80
# 设置余弦函数颜色蓝色,线宽2.5,样式为连线
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-") 
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-") 
plt.show() 

image-20220924090833909

(3)改变坐标轴刻度

import numpy as np 
import matplotlib.pyplot as plt 
X = np.linspace(-np.pi, np.pi, 256, endpoint=True) 
C, S = np.cos(X), np.sin(X) 
plt.figure(figsize=(10, 6), dpi=80) 
# X坐标轴最小值、最大值设置为原来的1.1倍
plt.xlim(X.min()*1.1, X.max()*1.1)
plt.ylim(C.min()*1.1, C.max()*1.1)
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-") 
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-") 
plt.show() 

image-20220924091807411

(4)改变坐标轴刻度显示

import numpy as np 
import matplotlib.pyplot as plt 
X = np.linspace(-np.pi, np.pi, 256, endpoint=True) 
C, S = np.cos(X), np.sin(X) 
plt.figure(figsize=(10, 6), dpi=80) 
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi])  # 显示+-π,+-π/2的刻度
plt.yticks([-1, 0, +1]) # 显示+-1,0的刻度
plt.xlim(X.min()*1.1, X.max()*1.1)
plt.ylim(C.min()*1.1, C.max()*1.1)
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-") 
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-") 
plt.show() 

image-20220924092505438

import numpy as np 
import matplotlib.pyplot as plt 
X = np.linspace(-np.pi, np.pi, 256, endpoint=True) 
C, S = np.cos(X), np.sin(X) 
plt.figure(figsize=(10, 6), dpi=80) 
# 显示+-π,+-π/2的刻度,将刻度映射成具体标签
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])  
# 显示+-1,0的刻度
plt.yticks([-1, 0, +1], [r'$-1$', r'$0$', r'$+1$']) 
plt.xlim(X.min()*1.1, X.max()*1.1)
plt.ylim(C.min()*1.1, C.max()*1.1)
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-") 
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-") 
plt.show() 

image-20220924093006446

(5)移动坐标轴

import numpy as np 
import matplotlib.pyplot as plt 
X = np.linspace(-np.pi, np.pi, 256, endpoint=True) 
C, S = np.cos(X), np.sin(X) 
plt.figure(figsize=(10, 6), dpi=80) 
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])  
plt.yticks([-1, 0, +1], [r'$-1$', r'$0$', r'$+1$']) 
# 移动坐标轴
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
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.xlim(X.min()*1.1, X.max()*1.1)
plt.ylim(C.min()*1.1, C.max()*1.1)
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-") 
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-") 
plt.show() 

image-20220924094336342

(6)增加图例

import numpy as np 
import matplotlib.pyplot as plt 
X = np.linspace(-np.pi, np.pi, 256, endpoint=True) 
C, S = np.cos(X), np.sin(X) 
plt.figure(figsize=(10, 6), dpi=80) 
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])  
plt.yticks([-1, 0, +1], [r'$-1$', r'$0$', r'$+1$']) 
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
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.xlim(X.min()*1.1, X.max()*1.1)
plt.ylim(C.min()*1.1, C.max()*1.1)
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine") 
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-", label="sine") 
# 增加图例,plot方法需要指定label
plt.legend(loc='upper left', frameon=False)
plt.show() 

image-20220924094934552

(7)标记特殊点

import numpy as np 
import matplotlib.pyplot as plt 
X = np.linspace(-np.pi, np.pi, 256, endpoint=True) 
C, S = np.cos(X), np.sin(X) 
plt.figure(figsize=(10, 6), dpi=80) 
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])  
plt.yticks([-1, 0, +1], [r'$-1$', r'$0$', r'$+1$']) 
# 设置标记点
t = 2*np.pi/3 
# plot横纵坐标参数都是列表,可以画出面积图,也可以画线
plt.plot([t, t], [0, np.cos(t)], color='blue', linewidth=1.5, linestyle='--')
# 标记出点
plt.scatter([t,], [np.cos(t),], 50, color='blue')
# 添加标注,第一个是标注的内容,第二个是标注的点,第三个是坐标,第四个是注释的位移,
# 第五个是注释坐标,第六个是箭头样式的设置,第七个是连接的样式
plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$', 
    xy=(t, np.sin(t)), xycoords='data',
    xytext=(-100, -40), textcoords='offset points',fontsize=16,
    arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=.2'))
plt.plot([t, t], [0, np.sin(t)], color='red', linewidth=1.5, linestyle='--')
plt.scatter([t,], [np.sin(t),], 50, color='red')
plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{\sqrt{3}}{2}$', 
    xy=(t, np.cos(t)), xycoords='data',
    xytext=(-90, -50), textcoords='offset points',fontsize=16,
    arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=.2'))
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine") 
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-", label="sine") 
# 增加图例,plot方法需要指定label
plt.legend(loc='upper left', frameon=False)
plt.show()

image-20220924110005873

  1. 参数详细设置

(1)窗口设置

参数默认值描述
num1作图窗口的个数
figsizefigure.figsize宽高,单位英寸
dpifigure.dpi分辨率
facecolorfigure.facecolor背景颜色
edgecolorfigure.edgecolor框线颜色
frameonTRUE是否显示框线

(2)子图绘制

import numpy as np 
import matplotlib.pyplot as plt 
plt.subplot(1, 2, 1)
plt.subplot(1, 2, 2)

image-20220924173132075

(3)比例绘图

import numpy as np 
import matplotlib.pyplot as plt 
plt.axes([0.1, 0.1, .8, .8])
plt.axes([0.2, 0.2, .3, .3])

image-20220924173651865

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐江小鱼

知识创造财富,余额还是小数

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值