Python绘图笔记

写在前面:

这是本人学习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)ex2y2 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’’ ’不画线
  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python 代码笔记是对 Python 程序代码的解释和说明。它可以帮助你理解代码的工作原理,并在以后更好地维护和编写代码。常用的代码笔记格式有注释、文档字符串等。示例代码: ```python # 计算平方 def square(x): """ 返回x的平方 """ return x*x print(square(4)) ``` 在上面的代码中,`# 计算平方`是注释,`"""返回x的平方"""`是文档字符串。 ### 回答2: Python代码笔记是程序员在学习和实践Python编程语言时记录的一种文档。它包括通过编写实际的Python代码示例来记录各种语法、函数、模块、库和算法的用法和应用。 Python代码笔记通常用于记录和整理编程语言的基本知识,并用代码示例来演示这些知识的具体使用。因为Python语言本身较为简洁易读,因此在代码笔记中使用Python语言编写示例代码非常方便。 通过编写Python代码笔记,程序员可以更好地理解和掌握Python编程语言的特性和用法。而且代码笔记还可以作为程序员的参考资料,帮助他们在遇到问题时快速找到解决方案并进行复用。 除了记录基本知识之外,Python代码笔记还可以用于记录程序员在实际项目中遇到的问题和解决方案。通过记录这些问题和解决方案,程序员可以在未来的项目中预防和避免相同的问题,并且能够提高自己的编程技巧和经验。 总之,Python代码笔记是程序员学习和实践Python编程语言时记录的一种文档。它可以帮助程序员整理知识、提高编程技巧,并成为他们解决问题和提高效率的有力工具。 ### 回答3: Python代码笔记是程序员在学习和使用Python语言时记录的一种方式。它可以包括以下内容: 首先,Python代码笔记通常会记录Python代码的基本语法和用法。这些笔记会列举Python的关键字、变量类型、运算符、控制流语句等基本知识点,以便在需要的时候进行快速查阅和复习。 其次,Python代码笔记还会记录一些常用的Python库和模块的使用方法。Python具有丰富的第三方库和模块,如numpy、pandas、matplotlib等,这些库在数据处理、科学计算、绘图等领域都有广泛的应用。通过记录库和模块的使用方法,可以帮助程序员实现特定的功能或解决具体的问题。 此外,Python代码笔记还会记录一些常见的编程技巧和经验。比如如何提高代码的效率、如何优化算法、如何进行调试等等。这些技巧和经验是程序员在实际开发中积累的宝贵资料,可以帮助他们更好地解决问题和提高工作效率。 最后,Python代码笔记还可以记录一些项目示例和实践经验。当程序员在开发具体的项目时,他们会遇到各种问题和挑战,记录下来的项目示例和实践经验可以为他们以后的开发工作提供参考和借鉴。这些实践经验可以包括项目的架构设计、数据库操作、接口调用等方面的知识。 综上所述,Python代码笔记是程序员学习和使用Python语言的重要辅助工具,它通过记录基本语法、常用库和模块的使用、编程技巧和经验以及项目示例和实践经验等内容,帮助程序员提高开发效率,解决问题,并不断提升自己的编程能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值