首页 > 其他 > 详细

Matplotlib学习

时间:2019-06-29 16:03:35      阅读:108      评论:0      收藏:0      [点我收藏+]

前言

在B站上把莫烦的Matplotlib教学视频刷一遍

正文

一、

首先是Matplotlib的基本用法

import matplotlib.pyplot as plt
import numpy as np
#%matplotlib auto
#%matplotlib qt5
x = np.linspace(-1,1,50)
y = 2*x+1

plt.plot(x,y)
plt.show()

技术分享图片

首先上述代码如果是在jupyter notebook中执行的,那么注释掉的两行就要至少放一行在这里,才会出现独立的图片,否则会是内嵌在jupyter notebook里;

当然,如果是单独运行一个py文件,那么上述这两行就不能写上去,否则要报错;

二、

接着是figure的使用方法,figure是设定指定窗口来画图,多个figure有多个图片,也可以在一个figure里画好几条线

%matplotlib qt5
x = np.linspace(-3,3,50)
y1 = 2*x+1
y2 = x**2

plt.figure()
plt.plot(x,y1)

plt.figure(num=3,figsize=(8,5))
plt.plot(x,y2)
#plt.plot(x,y1,color=‘red‘,linewidth=1.0,linestyle=‘--‘)

plt.show()

 技术分享图片

 

技术分享图片

表示两个figure生成两个图片,其中第二个图片设定为序号3,并且长和宽也指定

同样,当我需要在一个图片里放两条线时,只需

%matplotlib qt5
x = np.linspace(-3,3,50)
y1 = 2*x+1
y2 = x**2

plt.figure()
plt.plot(x,y1)

plt.figure(num=3,figsize=(8,5))
plt.plot(x,y2)
plt.plot(x,y1,color=red,linewidth=1.0,linestyle=--)

plt.show()

技术分享图片

三、

坐标轴修改

首先我们看一下怎样限定x和y轴的坐标范围:

%matplotlib qt5
x = np.linspace(-3,3,50)
y1 = 2*x+1
y2 = x**2

plt.figure()
plt.plot(x,y2)
plt.plot(x,y1,color=red,linewidth=1.0,linestyle=--)

plt.xlim((-1,2))
plt.ylim((-2,3))


plt.show()

技术分享图片

————————————————————————————————————————

接着看看对坐标轴刻度说明进行修改

%matplotlib qt5
x = np.linspace(-3,3,50)
y1 = 2*x+1
y2 = x**2

plt.figure()
plt.plot(x,y2)
plt.plot(x,y1,color=red,linewidth=1.0,linestyle=--)

plt.xlim((-1,2))
plt.ylim((-2,3))
plt.xlabel(I am x)
plt.ylabel(I am y)

new_ticks= np.linspace(-1,2,4)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,1.22,3,],
           [r$really\ bad$,r$bad \alpha$,r$normal$,r$good$ ,r$really\ good$])
plt.show()

xticks和yticks有两个返回值,一个是刻度,一个刻度标签

 技术分享图片

————————————————————————————————————————————————————————

 对坐标轴位置、刻度位置进行修改

%matplotlib qt5
x = np.linspace(-3,3,50)
y1 = 2*x+1
y2 = x**2

plt.figure()
plt.plot(x,y2)
plt.plot(x,y1,color=red,linewidth=1.0,linestyle=--)

plt.xlim((-1,2))
plt.ylim((-2,3))
plt.xlabel(I am x)
plt.ylabel(I am y)

new_ticks= np.linspace(-1,2,5)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,1.22,3,],
           [r$really\ bad$,r$bad \alpha$,r$normal$,r$good$ ,r$really\ good$])

ax = plt.gca()
#隐藏顶部和右边两条轴
ax.spines[right].set_color(none)
ax.spines[top].set_color(none)
#设置坐标轴上的数字显示的位置,top:显示在顶部 bottom:显示在底部,默认是none ax.xaxis.set_ticks_position(
bottom) ax.yaxis.set_ticks_position(left) #把底部的轴移动到竖轴的0位置;把竖直的轴移动到横轴的0位置 ax.spines[bottom].set_position((data,0)) ax.spines[left].set_position((data,0)) plt.show()

技术分享图片

解释 ax = plt.gca()

在matplotlib的图中,默认有四个轴,两个横轴和两个竖轴,可以通过ax = plt.gca()方法获取,gca是‘get current axes’的缩写,获取图像的轴,总共有四个轴top、bottom、left和right。

 三、

图例

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,50)
y1 = 2*x+1
y2 = x**2

plt.figure()
plt.xlim((-1,2))
plt.ylim((-2,3))
plt.xlabel(I am x)
plt.ylabel(I am y)

new_ticks= np.linspace(-1,2,5)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,1.22,3,],
           [r$really\ bad$,r$bad \alpha$,r$normal$,r$good$ ,r$really\ good$])

l1, = plt.plot(x,y1,label=up)
l2, = plt.plot(x,y2,color=red,linewidth=1.0,linestyle=--,label=down)
plt.legend(handles=[l1,l2],labels=[aaa,bbb],loc=best)
plt.show()

技术分享图片

loc参数是图例的位置,还有很多,例如upper right,upper down等,

但是这里有一个很奇怪的地方,假如l1 = plt.plot(x,y1,label=‘up‘),也就是去掉,后,图例就显示不成功了,但是如果lengend参数较简单,例如只有一个loc,那也会成功。

Matplotlib学习

原文:https://www.cnblogs.com/yqpy/p/11106405.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!