python画图程序代码_Python绘图与可视化
Python有很多可视化⼯具,本篇只介绍Matplotlib。
Matplotlib是⼀种2D的绘图库,它可以⽀持硬拷贝和跨系统的交互,它可以在Python脚本、IPython的交互环境下、Web应⽤程序中使⽤。该项⽬是由John Hunter于2002年启动的,其⽬的是为Python构建⼀个MATLAB式的绘图接⼝。如果结合使⽤⼀种GUI⼯具包(如IPython),Matplotlib还具有诸如缩放和平移等交互功能。它不仅⽀持各种操作系统上许多不同的GUI后端,⽽且还能将图⽚导出为各种常见的⾷量(vector)和光栅(raster)图:PDF、SVG、JPG、PNG、BMP、GIF等。
Matplotlib程序包
所谓“⼀图胜千⾔”,我们很多时候需要通过可视化的⽅式查看、分析数据,虽然Pandas中也有⼀些绘图操作,但是相⽐较⽽
⾔,Matplotlib在绘图显⽰效果⽅⾯更加出⾊。Python为Matplotlib提供了⼀个⽅便的接⼝,我们可以通过Pyplot对Matplotlib进⾏操作,多数情况下,Pyplot的命令与MATLAB有些相似。
导⼊Matplotlib包进⾏简单的操作(此处需要安装pip install matplotlib):
import matplotlib.pyplot as plt#约定俗成的写法plt#⾸先定义两个函数(正弦&余弦)
importnumpy as np
X=np.linspace(-np.pi,np.pi,256,endpoint=True)#-π to+π的256个值
C,s(X),np.sin(X)
plt.plot(X,C)
plt.plot(X,S)#在ipython的交互环境中需要这句话才能显⽰出来
plt.show()
输出结果:
绘图命令的基本架构及其属性设置
上⾯的例⼦我们可以看出,⼏乎所有的属性和绘图的框架我们都选⽤默认设置。现在我们来看Pyplot绘图的基本框架是什么,⽤过Photoshop的⼈都知道,作图时先要定义⼀个画布,此处的画布就是Figure,然后再把其他素材“画”到该Figure上。
1)在Figure上创建⼦plot,并设置属性
x=np.linspace(0,10,1000)#X轴数据
y1=np.sin(x)#Y轴数据
s(x**2)#Y轴数据 x**2即x的平⽅
plt.figure(figsize=(8,4))
plt.plot(x,y1,label="$sin(x)$",color="red",linewidth=2)#将$包围的内容渲染为数学公式
plt.plot(x,y2,"b--",label="$cos(x^2)$")#指定曲线的颜⾊和线性,如‘b--’表⽰蓝⾊虚线(b:蓝⾊,-:虚线)
plt.xlabel("Time(s)")
plt.ylabel("Volt")
plt.title("PyPlot First Example")'''使⽤关键字参数可以指定所绘制的曲线的各种属性:
label:给曲线指定⼀个标签名称,此标签将在图标中显⽰。如果标签字符串的前后都有字符'$',则Matplotlib会使⽤其内嵌的LaTex引擎将其显⽰为数学公式
color:指定曲线的颜⾊。颜⾊可以⽤如下⽅法表⽰
英⽂单词
以‘#’字符开头的3个16进制数,如‘#ff0000’表⽰红⾊。
以0~1的RGB表⽰,如(1.0,0.0,0.0)也表⽰红⾊。
linewidth:指定权限的宽度,可以不是整数,也可以使⽤缩写形式的参数名lw。'''plt.ylim(-1.5,1.5)
plt.legend()#显⽰左下⾓的图例
plt.show()
2)在Figure上创建多个⼦plot
如果需要绘制多幅图表的话,可以给Figure传递⼀个整数参数指定图表的序号,如果所指定序号的绘图对象已经存在的话,将不创建新的对象,⽽只是让它成为当前绘图对象。
fig1=plt.figure(2)
plt.subplot(211)#subplot(211)把绘图区域等分为2⾏*1列共两个区域,然后在区域1(上区域)中创建⼀个轴对象
plt.subplot(212)#在区域2(下区域)创建⼀个轴对象
plt.show()
输出结果:
我们还可以通过命令再次拆分这些块(相当于Word中拆分单元格操作)
f1=plt.figure(5)#弹出对话框时的标题,如果显⽰的形式为弹出对话框的话
plt.subplot(221)
plt.subplot(222)
plt.subplot(212)
plt.subplots_adjust(left=0.08,right=0.95,wspace=0.25,hspace=0.45)#subplots_adjust的操作时类似于⽹页css格式化中的边距处理,左边距离多少?#右边距离多少?这取决于你需要绘制的⼤⼩和各个模块之间的间距
plt.show()
输出结果:
3)通过Axes设置当前对象plot的属性
以上我们操作的是在Figure上绘制图案,但是当我们绘制图案过多,⼜需要选取不同的⼩模块进⾏格式化设置时,Axes对象就能很好地解决这个问题。
fig,axes=plt.subplots(nrows=2,ncols=2)#定⼀个2*2的plot
plt.show()
输出结果:
现在我们需要通过命令来操作每个plot(subplot),设置它们的title并删除横纵坐标值。
fig,axes=plt.subplots(nrows=2,ncols=2)#定⼀个2*2的plot
axes[0,0].set(title='Upper Left')
axes[0,1].set(title='Upper Right')
axes[1,0].set(title='Lower Left')
axes[1,1].set(title='Lower Right')#通过Axes的flat属性进⾏遍历
for ax inaxes.flat:#xticks和yticks设置为空置
ax.set(xticks=[],yticks=[])
plt.show()
输出结果:
另外,实际来说,plot操作的底层操作就是Axes对象的操作,只不过如果我们不使⽤Axes⽽⽤plot操作时,它默认的是
plot.subplot(111),也就是说plot其实是Axes的特例。
4)保存Figure对象
最后⼀项操作就是保存,我们绘图的⽬的是⽤在其他研究中,或者希望可以把研究结果保存下来,此时需要的操作时save。
plt.savefig(r"C:\Users\123\Desktop\save_test.png",dpi=520)#默认像素dpi是80
很明显保存的像素越⾼,内存越⼤。此处只是⽤了savefig属性对Figure进⾏保存。
Seaborn模块介绍
前⾯我们简单介绍了Matplotlib库的绘图功能和属性设置,对于常规性的绘图,使⽤Pandas的绘图功能已经⾜够了,但如果对Matplotlib 的API属性研究较为透彻,⼏乎没有不能解决的问题。但是Matplotlib还是有它的不⾜之处,Matplotlib⾃动化程度⾮常⾼,但是,掌握如何设置系统以便获得⼀个吸引⼈的图是相当困难的事。为了控制Matplotlib图表的外观,Seaborn模块⾃带许多定制的主题和⾼级的接⼝。
1)未加Seaborn模块的效果
importnumpy as npimportmatplotlib as mplimportmatplotlib.pyplot as plt
np.random.seed(sum(map(ord,"aesthetics")))#⾸先定义⼀个函数⽤来画正弦函数,可帮助了解可以控制的不同风格参数
def sinplot(flip=1):
x=np.linspace(0,14,100)for i in range(1,7):
plt.plot(x,np.sin(x+i*0.5)*(7-i)*flip)
sinplot()
plt.show()
输出结果:
2)加⼊Seaborn模块的效果
importnumpy as npimportmatplotlib as mplimportmatplotlib.pyplot as plt#添加了Seaborn模块
np.random.seed(sum(map(ord,"aesthetics")))#⾸先定义⼀个函数⽤来画正弦函数,可帮助了解可以控制的不同风格参数
def sinplot(flip=1):
x=np.linspace(0,14,100)for i in range(1,7):
plt.plot(x,np.sin(x+i*0.5)*(7-i)*flip)#转换成Seaborn模块,只需要引⼊seaborn模块
import seaborn as sns#添加Seaborn模块
sinplot()
plt.show()
输出效果:
⼩编使⽤的jupyter notebook编辑器,使⽤与不使⽤Seaborn模块效果差别不明显。
使⽤Seaborn的优点有:
Seaborn默认浅灰⾊背景与⽩⾊⽹格线的灵感来源于Matplotlib,却⽐Matplotlib的颜⾊更加柔和
Seaborn把绘图风格参数与数据参数分开设置。
其中,Seaborn有两组函数对风格进⾏控制:axes_style()/set_style()函数和plotting_context()/set_context()函数。axes_style()函数和plotting_context()函数返回参数字典,set_style()函数和set_context()函数设置Matplotlib。
使⽤set_style()函数
python新手代码图案如何保存importseaborn as sns'''Seaborn有5种预定义的主题:
darkgrid(灰⾊背景+⽩⽹格)
whitegrid(⽩⾊背景+⿊⽹格)
dark(仅灰⾊背景)
white(仅⽩⾊背景)
ticks(坐标轴带刻度)
默认的主题是darkgrid,修改主题可以使⽤set_style函数'''sns.set_style("whitegrid")
sinplot()#即上段代码中定义的函数
plt.show()
输出结果:
使⽤set_context()函数
'''上下⽂(context)可以设置输出图⽚的⼤⼩尺⼨(scale)
Seaborn中预定义的上下⽂有4种:paper、notebook、talk和poster
默认使⽤notebook上下⽂'''sns.set_context("poster")
sinplot()#即前⽂定义的函数
plt.show()

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。