科学计算库(六)Matplotlib画图

导入模块

import matplotlib.pyplot as plt

如果想显示交互式界面,可以加:

%matplotlib tk    # 默认是行内显示%matplotlib inline

解决中文显示问题

import matplotlib as mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False

简介

Python最常用的绘图库,提供了一整套十分适合交互式绘图的命令API,比较方便的就可以将其嵌入到GUI应用程序中。

官网examples入门学习:

http://matplotlib.org/examples/index.html 

http://matplotlib.org/gallery.html

Matplotlib它能帮你画出美丽的:

  • 线图;
  • 散点图;
  • 等高线图;
  • 条形图;
  • 柱状图;
  • 3D 图形;
  • 甚至是图形动画等等.

看下代码示例,最简单的画一张折线图:

import matplotlib as mpl

plt.plot([1,2,3],[1.5,1,2.5])  # X轴为[1,2,3],Y轴为[1.5,1,2.5]
plt.show() #显示图形

图形 figure

figure:图形、画板,matplotlib中的所有图像都是位于figure对象中。matplotlib 的 figure 就是一个 单独的 figure 小窗口,小窗口里面还可以有画很多的图形。

创建画板时的参数,figure(num,figsize)

num:画板序号,仅给画板编号。

figsize:设置画板大小,以英寸为单位。figsize=(8,5) 8英寸宽,5英寸高

x=np.arange(-3,3,0.1)
y1=np.sin(x)
y2=np.cos(x)

plt.figure() #创建第一个画板
plt.plot(x,y1)
plt.figure(num=3,figsize=(8,5)) # 创建第二个画板
plt.plot(x,y2)
plt.show()

标题、标签、图例、刻度和显示范围

title:设置标题

plt.title("这是一个标题")

xlabel、ylabel:设置X轴Y轴标签

plt.xlabel("X轴标签")
plt.ylabel("Y轴标签")

设置标签的文字的大小和颜色

label_font = {
    'family': 'SimHei',
    'weight': 'normal',
    'size': 30,
    'color':'red',
}
plt.xlabel("X轴标签",label_font)
plt.ylabel("Y轴标签",label_font)

xlim、ylim:控制画板的范围

 

plt.xlim(-6,6) # 设置X轴的显示范围
plt.ylim(-3,3) # 设置Y轴的显示范围

xticks、yticks: 控制画板轴的显示刻度值

plt.xticks([刻度范围],[点显示的东西]) 

刻度上之前的值会被擦除,重新绘制刻度显示值,不在刻度范围中的点不会显示内容。

plt.yticks([-1,0,1],["A","B","C"])

plt.xticks([0],["原点"])

 

legend ():生成默认图例

matplotlib 中的 legend 图例就是为了帮我们展示出每个数据对应的图像名称. 更好的让读者认识到你的数据结构。

画折线图的时候,调用plot的时候可以增加线条的label,画多个线条的时候就能区分线条。

设置线条的label时,必须调用plt.legend()线条标签才会显示出来。

x=np.arange(-3,3,0.1)
y1=np.sin(x)
y2=np.cos(x)
figsize=(8,6)
plt.figure(figsize=figsize) #创建一个画板
plt.title("这是一个标题")
label_font = {
    'family': 'SimHei',
    'weight': 'normal',
    'size': 30,
    'color':'red',
}
plt.xlabel("X轴标签",label_font)
plt.ylabel("Y轴标签",label_font)
plt.xlim(-6,6) # 设置X轴的显示范围
plt.ylim(-3,3) # 设置Y轴的显示范围
plt.yticks([-1,0,1],["A","B","C"]) # 设置显示刻度值
plt.xticks([0],["原点"])
plt.plot(x,y1,label="SIN") # 增加线条的label,标注线条功能
plt.plot(x,y2,label="COS")
plt.legend() # 生成图例 
plt.show()

 

子图subplot

Subplot:子图

figure对象下创建一个或多个subplot对象(即axes)用于绘制图像。

subplot(numRows, numCols, plotNum)

numRows:几行

numCols:几列

plotNum:第几个子图

也可以通过figure对象,用面向对象的方式添加子视图,fig.add_subplot()返回子视图对象。

x=np.arange(-3,3,0.1)
y1=np.sin(x)
y2=np.cos(x)

plt.figure() #创建第一个画板
plt.subplot(1,2,1) # 一行二列第1个子图
plt.plot(x,y1)
plt.title("第一张图")
plt.subplot(1,2,2) # 一行二列第2个子图
plt.plot(x,y1)
plt.title("第二张图")

fig2=plt.figure(num=3,figsize=(8,5)) # 创建第二个画板
aex1=fig2.add_subplot(2,1,1) # 面向对象方式创建子图,二行一列第1个子图
aex2=fig2.add_subplot(2,1,2) # 二行一列第2个子图
aex1.plot(x,y2)
aex1.set_title("第三张图")
aex2.plot(x,y2)
aex2.set_title("第四张图")
fig2.subplots_adjust(wspace=0,hspace=0) #调节子视图之间的间距
plt.show()

设置边框

gca获取当前坐标轴信息。使用spines设置边框,使用set_color设置边框颜色:默认白色

ax=plt.gca()
ax.spines['top'].set_color("none")

plt.plot([1,2,3],[1.5,1,2.5])  # X轴为[1,2,3],Y轴为[1.5,1,2.5]
ax=plt.gca()
ax.spines['top'].set_color("none")
ax.spines['left'].set_color("none")
ax.spines['right'].set_color("none")
ax.spines['bottom'].set_color("none")
plt.show() #显示图形

外部边框都已经去掉了

Sublots():返回一个画板和多个子图

参数:  

nrows=x, ncols=x, sharex=True, sharey=False,             

gridspec_kw={'height_ratios':[2,2,1,1]}

例: fig, ax = plt.subplots(2,2),

其中参数分别代表子图的行数和列数,一共有 2x2 个图像。函数返回一个figure图像和一个子图ax的array列表。

保存图片

plt.savefig('filepath')
plt.savefig('filepath',dpi=300) 设置dpi图片清晰度

 

常见图形

1、折线图plot


plot(x,y1,x,y2) ,一个plot也可以画多条线条

color="" 设置线条颜色
plot(x,y,color='red') 

linewidth=num 设置线条宽度
plot(x,y,color='red',linewidth=3) 

linestyle='-.' 设置线条类型

  • dashed 虚线
  • dotted 点线
  • solid 实线
  • -. 虚点线

marker 标记点样式
plot(x,y,color='red',linewidth=1,marker="*")

markersize=num 标记点大小 

2、柱状图bar

plt.bar(x,data,width=0.8,align='center')
x数据位置
data数据值,高度
align 对齐方式,edge右边,

plt.text(x,y,text) x,y点坐标上面写字

3、饼图pie


plt.pie(data,label=[],explode)
explode 每一块离开中心的距离
radius=float 半径长度,控制圆大小
startangle 起始角度
shadow=True 阴影
autopct="%.1f%%” 每一块的百分比描述
pctdistance 描述距离中心的位置

4、散点图 scatter

scatter(x,y)
x,y相同长度的序列

科学计算库拓展

通过Series和DataFrame直接画图
ser.plot() 折线图
ser.plot(kind='bar') 柱状图
ser.plot(kind='pie',autopct="%.1f%%") 饼图
plt.show()

DataFrame 制图

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值