写在前面:

这是本人学习python绘图所做笔记,具体内容参考CSDN博客、菜鸟教程、知乎等,特别感谢某位低调学长在我Vscode莫名装不好库时所提供的巨大帮助。

零、关于字体

  1. 欲设置汉字,需要引入:
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False

其中’SimHei’代表黑体

'SimSun’代表宋体

一、折线图的绘制

  1. 首先以列表或元组的形式设置横纵坐标,如:
x=["8.17","8.24","8.31","9.7","9.14","9.21","9.28"]
Americas=[150.7234,162.3891,148.1995,176.3048,146.2450,138.6267,127.3971]
Europe=[113.4516,116.5092,117.2461,114.6065,111.3722,109.0667,109.7735]
SouthEast_Asia=[73.1279,61.4080,59.6456,54.3013,45.3539,38.3053,34.4305]
Western_Pacific=[42.9153,51.3581,55.3344,53.1922,48.7586,46.1979,37.8919]
  1. 使用plot函数进行绘制,格式:
plt.plot(x,y,label="xxx",color='r',marker='+')

其中第一个参数x为横坐标值,第二个参数y为纵坐标对应值,第三个参数label="xxx"表示标签名称(可省略),第四个参数color表示线的颜色(省略即为默认),第五个参数marker表示每个点的形状(省略即为默认),具体例子如下:

plt.plot(x,Americas,label="美洲",color="r",marker="+")
plt.plot(x,Europe,label="欧洲",color='y',marker=".")
plt.plot(x,SouthEast_Asia,label="东南亚",color='g',marker="^")
plt.plot(x,Western_Pacific,label="大洋洲",color='b',marker="p")#分别绘制四个地区
  1. 图表美化相关:

设置图标题,如:

plt.title("新冠肺炎确诊情况")

设置x轴标签,如:

plt.xlabel("日期")

设置y轴标签,如:

plt.ylabel("新增确诊人数/万人")

设置纵轴上下限,如:

plt.ylim(0,200)

添加图例,如:

plt.legend(labels=[],loc=(x,y)/"")

labels:图例对应名称(可省略)

loc:位置,(x,y)表示横纵位置,也可以用"best",“center”,"lower right"等等

  1. 显示:
plt.show()

综合以上几种操作代码为:

import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
plt.figure(figsize=(4,6))
x=["8.17","8.24","8.31","9.7","9.14","9.21","9.28"]
Americas=[150.7234,162.3891,148.1995,176.3048,146.2450,138.6267,127.3971]
Europe=[113.4516,116.5092,117.2461,114.6065,111.3722,109.0667,109.7735]
SouthEast_Asia=[73.1279,61.4080,59.6456,54.3013,45.3539,38.3053,34.4305]
Western_Pacific=[42.9153,51.3581,55.3344,53.1922,48.7586,46.1979,37.8919]
plt.plot(x,Americas,label="美洲",color="#000000",marker="+")
plt.plot(x,Europe,label="欧洲",color='y',marker="o")
plt.plot(x,SouthEast_Asia,label="东南亚",color='g',marker="^")
plt.plot(x,Western_Pacific,label="大洋洲",color='b',marker="p")
plt.title("新冠肺炎确诊情况")
plt.xlabel("日期")
plt.ylabel("新增确诊人数/万人")
plt.ylim(0, 200)
plt.legend()
plt.show()

最终结果如图:

二、连续函数图像的绘制

  1. 需要导入科学计算基础库以及绘图库:
import numpy as np
import matplotlib.pyplot as plt

关于numpy的一点额外说明:

利用自带函数可直接对数列中每个数据进行运算,如:

>>>import numpy as np
>>>a=[1,2,3,4,5]
>>>b=np.sin(a)
array([ 0.84147098  0.90929743  0.14112001 -0.7568025  -0.95892427])

可用函数有:sin, cos, tan, arcsin, arccos, arctan, around(四舍五入), floor, ceil等

  1. 生成一组x坐标值——arange函数:

格式类似于range:开始值,终值(不含),步长(省略时为1,也可以为负数),如:

>>>import numpy as np
>>>np.arange(0,1,0.1)
array([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.8,0.9])

arange的参数可以为浮点数,而range只能为整数,而且arange返回的是列表,range不是

  1. 生成一组x坐标值——linspace函数:

格式为:开始值,终值,元素个数(省略时为50)

在闭区间[开始值,终止值]之间等距生成指定个数元素(浮点数)的一个数组,如:

>>>import numpy as np
>>>np.linspace(0,1.2,13)
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1])
>>>np.linspace(3,4,5)
array([3.  , 3.25, 3.5, 3.75, 4.  ])

(小数点应该是表示这是一个float类型而非int)

可有第四个参数endpoint,为True时含终值,为False时不含,省略时默认True,如

>>>np.linspace(3,4,5,endpoint=False)
array([3. , 3.2, 3.4, 3.6, 3.8])
  1. 创建子图——subplot函数:
subplot(numRows,numCols,plotNum)

numRows:子图的总计行数,默认为1

numCols:子图的总计列数,默认为1

plotNum:指明图样放在哪个子区域中,从左到右从上到下依次编号

subplot每次只创建一张子图,通过plotNum参数指明子图的编号(即位置),如:

plt.subplot(2,1,1)
plt.(x1,y1,'rx-') #第三个参数用单引号引住,以此为颜色、数据点形状、线形
plt.subplot(2,1,2)
plt.plot(x2,y2,'ko-')
  1. 设置画布——figure函数:
plt.figure(figsize=(x,y),dpi=80)

x,y:图形的长宽大小

dpi:分辨率,默认为80,越大越清晰,但不建议太大

若想同时绘制多个图,只需要给figure函数中增加一个整数参数,如:

plt.plot(x1,y1)
plt.figure(1,figsize=(6,6),dpi=80)
plt.plot(x2,y2)
plt.figure(2,figsize=(8,8),dpi=100)

综合以上几种操作总代码为:

import numpy as np
import matplotlib.pyplot as plt
x1=np.linspace(0.0,5.0)
x2=np.linspace(0.0,5.0)
y1=np.cos(2*np.pi*x1)
y2=np.cos(2*np.pi*x2)*np.exp(-x2)
plt.figure(figsize=(8,8)) #创建一个绘图对象,设置其大小
plt.subplot(2,1,1)
plt.plot(x1,y1,'rx-') #红色,离散数据点形状为“,曲线为实线
plt.xlabel('time(s)')
plt.ylabel('Undamped')
plt.title('A tale of 2 subplots')
plt.subplot(2,1,2)
plt.plot(x2,y2,'ko-') #黑色,实心圆点,曲线为实线
plt.xlabel('time (s)')
plt.ylabel('Damped oscillation')
plt.show()

最终结果如图:

三、柱状图的绘制

  1. bar函数,格式:
bar(left,height,width=0.8,bottom=None)

left:柱状图的做边缘的x坐标序列(列表或元组),这里有个小技巧,如果要是画多个图,第一个横坐标序列若为x,则可令第二个横坐标序列为x+width,这样两个柱状图能正好连起来而不重合

height:柱状图的高度序列(列表或元组)

以下参数均不是必要参数,此为我认为较为常用,[全部内容在这里](matplotlib.pyplot.bar — Matplotlib 3.5.2 documentation):

width:柱状图的宽度,默认值为0.8

bottom:bar的地步高度,默认值为None

align:对齐方式,‘center’或者’edge’,默认值为’center’

color/edgecolor:柱状图/边线颜色,默认值为None(蓝色)

linewidth:线的粗细,默认值为None

orientation:柱状图朝向,vertical或horizontal,默认值为vertical

log:是否使用对数坐标,true为对数轴,False为正常轴

  1. legend函数详细用法:
legend(*args,**kwargs)

args:参数序列,即图形对象,可以是bar函数的返回值

kwargs:参数所对应的图里序列,类型为元组,每个部分用单引号引起来,这两个参数的元素数需相同

相较于绘制折线图中直接在plot中label='xxx’是另一种方法

如:

rects1=bar(,...,)
rects2=bar(,...,)
legend((rects1,rects2),('Men','Women'))
  1. text函数详细用法:

首先需要调用pylab的mpl模块,格式如下:

import matplotlib as plt
from pylab import mpl
plt.text(x,y,s,**kwargs)

x,y:分别为文本的横纵坐标值,针对不同的图建议通过尝试找到合适的x,y

s:为所要添加文本,用单/双引号引起来

**kwargs为可选参数,常见有:

ha:水平对齐(horizontal align)方式,‘center’,‘left’或’right’(x坐标相对文字的位置)

va:垂直对齐(vertical align)方式,‘center’,‘top’或’bottom’(y坐标相对文字的位置)

fontsize:字体大小,默认值为12

综合以上几种操作代码为:

import numpy as np
import matplotlib.pyplot as plt
N=5
menMeans=(20,35,30,35,27)
womenMeans=(25,32,34,20,25)
ind=np.arange(N)
width=0.35
ind=np.array(range(N))
rects1=plt.bar(ind,menMeans,width,color='r',edgecolor='b')
rects2=plt.bar(ind+width,womenMeans,width,color='y',edgecolor='m')
plt.legend((rects1, rects2),('Men','Women'))
plt.xlabel('men and women')
plt.ylabel('Scores')
plt.title('Scores by group and gender')
plt.xticks(ind+width/2, ('G1','G2','G3','G4','G5'))
plt.show()

最终结果如图:

四、极坐标图形的绘制

  1. 与连续函数图形绘制类似,只需增加参数polar=True,如:
t=np.arange(0,2*np.pi,0.01)
plt.subplot(2,2,1,polar=True) #这里是为了画多个图
r1=a*(1+np.sin(t))
plt.plot(t,r1,color='r')
  1. subplot_adjust函数设置多个子图间距,如:
plt.subplots_adjust(wspace=0.3,hspace=0.6)

wspace,hspace:为横纵间距,建议根据实际情况调整

亦可在plt.show()之前使用plt.tight_layout()使子图不重叠紧凑排布

综合以上操作,代码为:

import numpy as np
import matplotlib.pyplot as plt
a=10
t=np.arange(0,2*np.pi,0.01)
plt.subplot(2,2,1,polar=True)
r1=a*(1+np.sin(t))
plt.plot(t,r1,color='r')
plt.title('r=a(1+sint)')
plt.subplot(2,2,2,polar=True)
r2=a*np.cos(t)*np.cos(t)
plt.plot(t,r2,color='g')
plt.title('r=acos^2t')
plt.subplot(2,2,3,polar=True)
r3=a*np.sin(t)*np.sin(t)
plt.plot(t,r3,color='m')
plt.title('r=asin^2t')
plt.subplot(2,2,4,polar=True)
r4=a*np.cos(t)*np.sin(t)
plt.plot(t,r4,color='b')
plt.title('r=asint*cost')
plt.subplots_adjust(wspace=0.3,hspace=0.6)
plt.show()

最终结果如图:

五、隐函数图形的绘制

  1. 导入sympy库相应函数:
from sympy import plot_implicit as pt,Eq
from sympy.abs import x,y #引入隐函数对应变量
  1. 绘制隐函数:
pt(Eq(x*x+x*y+y*y,1),line_color='b')

最终结果如图:

六、三维图形的绘制

  1. 导入sympy库相应函数:
from sympy import *
from sympy.plotting import plot3d
  1. 绘制形如 z = ( x + y ) e − x 2 − y 2 x ∈ [ − 3 , 3 ] , y ∈ [ − 2 , 2 ] z=(x+y)e^{-x^2-y^2}\ x\in[-3,3],y\in[-2,2] z=(x+y)e−x2−y2 x∈[−3,3],y∈[−2,2]的函数图像:
from sympy.abc import x,y
a=plot3d((x+y)*exp(-x**2-y**2),(x,-3,3),(y,-2,2))

最终结果如图:

七、饼形图的绘制

  1. 导入matplotlib.pyplot即可:
import matplotlib.pyplot as plt
  1. pie函数,格式:
plt.pie([],colors=[],labels=[],explode=[],autopct='')

第一个参数为各个部分个数(会自动计算百分比)

colors:为颜色对应的列表,需一一对应

labels:为每一部分的名称

explode:为每部分远离圆心距离,可表突出强调,类型为float(一般0.1左右即可)

autopct:格式化数据

综合以上几种操作代码为:

import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams["font.sans-serif"]=["SimSun"]
matplotlib.rcParams["axes.unicode_minus"] = False
y=[21,47,48,36,47]
plt.pie(y,colors=['gray','green','limegreen','blue','purple'],explode=[0,0,0,0,0.1],autopct='%.2f%%')
plt.title("各个等级人数占比")
plt.legend(labels=('newbie','pupil','specialist','expert','candidate'),title='不同等级对应颜色',loc=(1,0.618))
plt.show()

最终结果如图:

附:

关于颜色的说明

简写 颜色
‘r’ 红色
‘g’ 绿色
‘b’ 蓝色
‘c’ 青色
‘m’ 品红色
‘y’ 黄色
‘k’ 黑色
‘w’ 白色

自定义颜色,形如"#00FF00"表示绿色,具体可参考HTML颜色值

关于离散数据点形状的说明

形状 简写
黑点 ‘.’
加号 ‘+’
型号 ‘**’
实心圆点 ‘o’
菱形 ‘d’
五角星 ‘p’
六角形 ‘h’
X号 ‘x’
方块 ‘s’
小三角 ‘^’

关于线形的说明

类型 简写 说明
‘solid’(默认) ‘-’ 实线
‘dotted’ ‘:’ 点虚线
‘dashed’ ‘–’ 破折线
‘dashdot’ ‘-.’ 点划线
‘None’ ’ ’ 不画线

Python绘图笔记相关推荐

  1. Python 绘图框架 MatplotLib 笔记(一)

    MatplotLib 是一套类似MatLab的 Python 绘图工具. 一.线形图 常用库函数 import matplotlib.pyplot as plt matplotlib 对中文支持不是很 ...

  2. Python机器学习笔记之pandas绘图

    前言 本文基于南京大学张莉老师的<用python玩转数据>记录Python绘图学习历程. 一.pandas绘图目的 pandas 绘图是基于Series和DataFrame的绘图,可直接将 ...

  3. python自学笔记15之实例之绘图、dataframe操作、读写csv,excle

    用Python绘图,借助强大的numpy和matplotlib import numpy as np import matplotlib.pyplot as plt import pandas as ...

  4. Python气象绘图笔记——常用气象绘图函数脚本封装与使用记录

    由于工作需要,将对我常用的python绘图脚本进行封装,为了防止代码丢失.忘记使用流程等,写个博客记录下. 要加载的包 import os import matplotlib.ticker as mt ...

  5. Python学习笔记:常用第三方模块(1)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  6. 数字图像处理与Python实现笔记之图像特征提取

    数字图像处理与Python实现笔记 摘要 绪论 1 数字图像处理基础知识 2 彩色图像处理初步 3 空间滤波 4 频域滤波 5 图像特征提取 5.1 图像颜色特征提取 5.1.1 颜色直方图 1 一般 ...

  7. 数字图像处理与Python实现笔记之基础知识

    数字图像处理与Python实现笔记之基础知识 摘要 绪论 1 数字图像处理基础知识 1.1 数字图像简介 1.1.1 数字图像处理的目的 1.1.2 数字图像处理的应用 1.1.3 数字图像处理的特点 ...

  8. python数据挖掘笔记】二十.KNN最近邻分类算法分析详解及平衡秤TXT数据集读取

    #2018-04-06 07:57:00 April Friday the 14 week, the 096 day SZ SSMR python数据挖掘笔记]二十.KNN最近邻分类算法分析详解及平衡 ...

  9. Python数据挖掘笔记 七 .PCA降维操作及subplot子图绘制

    Python数据挖掘笔记 七 .PCA降维操作及subplot子图绘制 这篇文章主要介绍四个知识点,也是我那节课讲课的内容.1.PCA降维操作:2.Python中Sklearn的PCA扩展包:3.Ma ...

最新文章

  1. Javascript Tip(1) 操作剪贴板
  2. CentOS7 打包RPM 升级OpenSSH8.3
  3. python sqlite3以字典形式返回查询结果
  4. 什么?口红输给口罩了?
  5. C# 控件缩写大全+命名规范+示例
  6. 反思深度思考:预热[准备] 高密度[压力专注] 辨真伪[冷静分析] 反推[灵活] 结构化[全局]
  7. java web空白xml_【图片】我做的JSP+Servlet程序,插入信息提交后出现空白页面,不知道是…【java吧】_百度贴吧...
  8. makefile中的shell调用---注意事项
  9. “自带大屏”的便利店,你见过吗?
  10. linux下java基于UDP编程聊天_基于Linux下的UDP编程
  11. ansible操作远程服务器报Error: ansible requires the stdlib json or simplejson module, neither was found!...
  12. sdn交换机与普通交换机区别—Vecloud
  13. 我为什么不看好微信小程序_0
  14. python获取电脑屏幕分辨率
  15. centos访问window共享目录
  16. UWB-DW1000 在8位单片机上移植使用
  17. Linux期末考试必考内容,linux期末考试
  18. 会说话的TOM猫的原理是什么
  19. ubuntu终端中返回上一次访问的目录
  20. NABCD---生活日历

热门文章

  1. python管理数据库设计_python2.0_day19_后台数据库设计思路
  2. CentOS 5/6/7使用摘记
  3. 关于FlashDB的应用-GD32F450上
  4. surface pro4 win10下安装elementray os双系统教程
  5. 从前后端分离到前后端整合的“退步”(二)pom.xml文件配置
  6. 大恒水晶相机_大恒工业相机多实例使用
  7. Fuchsia编译与真机安装
  8. 学习-Java循环之continue
  9. 深度:戴尔中国十年之变
  10. 奇奇怪怪的大佬:从职业赌徒到互联网大佬