Python绘图Matplotlib手册-程序员宅基地

技术标签: python  matplotlib  numpy  

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)窗口设置

参数 默认值 描述
num 1 作图窗口的个数
figsize figure.figsize 宽高,单位英寸
dpi figure.dpi 分辨率
facecolor figure.facecolor 背景颜色
edgecolor figure.edgecolor 框线颜色
frameon TRUE 是否显示框线

(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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dolly_baby/article/details/127030293

智能推荐

耗时一个月!期末熬夜复习整理 | 计算机网络(谢希仁第七版)大合集【知识点+大量习题讲解】_计算机网络期末复习题-程序员宅基地

文章浏览阅读2.5w次,点赞204次,收藏1.8k次。期末计网满绩计划教材:计算机网络(第七版)谢希仁版目录1. 概述2. 物理层3. 数据链路层(次重点)4. 网络层(重点)5. 运输层(重点)6. 应用层7. 网络安全最后1. 概述第一章概述2. 物理层第二章物理层3. 数据链路层(次重点)第三章数据链路层4. 网络层(重点)第四章网络层5. 运输层(重点)第五章运输层6. 应用层第六章应用层7. 网络安全稍后发布最后小生凡一,期待你的关注。..._计算机网络期末复习题

DNS解析中的A记录、AAAA记录、CNAME记录、MX记录、NS记录、TXT记录、SRV记录、URL转发等-程序员宅基地

文章浏览阅读6k次,点赞2次,收藏18次。AA记录: 将域名指向一个IPv4地址(例如:100.100.100.100),需要增加A记录NSNS记录: 域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录SOASOA记录: SOA叫做起始授权机构记录,NS用于标识多台域名解析服务器,SOA记录用于在众多NS记录中标记哪一台是主服务器MXMX记录: 建立电子邮箱服务,将指向邮件服务器地址,需要设置MX记录。建立邮箱时,一般会根据邮箱服务商提供的MX记录填写此记录TXTTXT记录: 可任意填写,可为空。一_a记录

SpringBoot项目引入外部jar包_springboot引入外部jar包-程序员宅基地

文章浏览阅读695次。SpringBoot项目引入外部jar包_springboot引入外部jar包

Java系列(面试必备):HashMap和Hashtable的区别!_java hashtable的优缺点-程序员宅基地

文章浏览阅读3.1k次,点赞19次,收藏84次。Java系列(面试必备):HashMap 和 Hashtable 的 6 个区别!前言今天博主将为大家分享:Java系列(面试必备):HashMap 和 Hashtable 的 6 个区别!不喜勿喷,如有异议欢迎讨论!首先推荐结合博主的这篇文章进行阅读===>Java系列(面试必备):简单的hashCode和equals面试题,有好多坑!HashMap 和 Hashtable 是 J..._java hashtable的优缺点

elasticSearch - es报错:exception [type=search_phase_execution_exception, reason=all shards failed]_elasticsearch exception [type=search_phase_executi-程序员宅基地

文章浏览阅读5.7k次。查询语句中,字段类型使用错误,在es中查询字段类型为int,而查询语句中错误地用成了string。_elasticsearch exception [type=search_phase_execution_exception, reason=all s

WIZnet W5300-TOE MQTT 发布和订阅 (micropython)_w5500 mqtt onenet-程序员宅基地

文章浏览阅读113次。这些部分将指导您完成一系列步骤,从配置开发环境到使用 STM32f429zi (nuleo-f429zi) 和 W5300-TOE 运行以太网示例 基本设置请参阅“入门”指南。_w5500 mqtt onenet

随便推点

linux下mkdir头文件_Linux下的创建目录函数——mkdir()-程序员宅基地

文章浏览阅读2.2k次。原型:int mkdir (const char *filename, mode_t mode)返回0表示成功,返回-1表述出错。使用该函数需要包含头文件sys/stat.hmode 表示新目录的权限,可以取以下值:S_IRUSRS_IREADRead permission bit for the owner of the file. On many systems this bit is 040..._linux mkdir 头文件

Error:Attempt to invoke virtual method ‘void android.widget.TextView.setText(java.lang.CharSeq_attempt to invoke virtual method 'void android.wid-程序员宅基地

文章浏览阅读5.2k次。Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference_attempt to invoke virtual method 'void android.widget.textview.settext(java.

BZOJ 4034 HAOI2015 T2 DFS序+线段树_haoi2015 t2-bzoj4034-程序员宅基地

文章浏览阅读2.4k次。题目大意:给定一棵树,每个点有点权,支持下列操作: 1.某个点的点权+a 2.某棵子树所有点权+a 3.查询某个点到根路径上的点权和 这个用入栈出栈序就可以了 入栈为正,出栈为负,那么一个点到根路径上的权值和就是入栈出栈序中[1,入栈位置]的和 而子树在入栈出栈序中是连续的,因此用线段树维护一下就可以了 (似乎只要无脑链剖就可以了?#include #include_haoi2015 t2-bzoj4034

3D数学基础(一)——左手坐标系和右手坐标系_3d左手坐标系-程序员宅基地

文章浏览阅读3.7k次。3D数学基础(一)——左手坐标系和右手坐标系1、左手坐标系左手坐标系的定义伸出左手,让拇指和是指成L型,大拇指向右,食指向前,中指指向前方,这样便定义好了一个左手坐标系,其中拇指为x轴,食指为Y轴,中指为Z轴。图示2、右手坐标系右手坐标系的定义右手坐标系与左手坐标系相反图示3、意义左手坐标系和右手坐标系虽然定义简单,并且可以相互转换,但是在一个场景中定义好坐标系是左手坐标..._3d左手坐标系

Java NIO之Selector_java nio selecter-程序员宅基地

文章浏览阅读278次。一、Java NIO 的核心组件Java NIO的核心组件包括:Channel(通道),Buffer(缓冲区),Selector(选择器),其中Channel和Buffer比较好理解 简单来说 NIO是面向通道和缓冲区的,意思就是:数据总是从通道中读到buffer缓冲区内,或者从buffer写入到通道中。二、Java NIO Selector1. Selector简介选择器..._java nio selecter

1. 一键安装oracle11g数据库_linux安装oracle11g数据库-程序员宅基地

文章浏览阅读2.3k次,点赞4次,收藏20次。Oracle数据库在Linux系统上安装步骤比较多,为了方便Oracle数据库的安装,编写了以下脚本,简化了Oracle数据库的安装。_linux安装oracle11g数据库