python-matplotlib库使用

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1,1,100) #从-1 到1生成100个带你
y = 2*x +1
plt.plot(x,y)
plt.show()

figure 图像

x = np.linspace(-1,1,100)
y1 = 2x +2
y2 = x
*2
plt.figure()
plt.plot(x,y1)

plt.figure(figsize=(8,2)) #设置图像的大小
plt.plot(x,y2)
plt.show()

将两个图画在一起

plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
plt.plot(x,y2,color='blue',linewidth=5.0,linestyle='-')
plt.show()

设计坐标轴

x = np.linspace(-1,1,100)
y1 = 2x +2
y2 = x
*2

plt.xlim((-1,2))
plt.ylim((-2,3)) #限制xy的范围
plt.xlabel('I am X')
plt.ylabel('I am Y') #设置xy的名称
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
plt.plot(x,y2,color='blue',linewidth=5.0,linestyle='-')
plt.show()

使用自定义的xy的坐标轴1

x = np.linspace(-3,3,100)
y1 = 2x +2
y2 = x
*2

plt.xlim((-1,2))
plt.ylim((-2,3)) #限制xy的范围
plt.xlabel('I am X')
plt.ylabel('I am Y') #设置xy的名称
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
plt.plot(x,y2,color='blue',linewidth=5.0,linestyle='-')

new_ticks = np.linspace(-2,2,11)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-1,0,1,2,3],
['leverl1','leverl2','leverl3','leverl4','leverl5'])
plt.show()

自定义xy的坐标轴2

x = np.linspace(-3,3,100)
y1 = 2x +1
y2 = x
*2

plt.xlim((-1,2))
plt.ylim((-2,3)) #限制xy的范围
plt.xlabel('I am X')
plt.ylabel('I am Y') #设置xy的名称
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
plt.plot(x,y2,color='blue',linewidth=5.0,linestyle='-')

new_ticks = np.linspace(-2,2,11)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-1,0,1,2,3],
['leverl1','leverl2','leverl3','leverl4','leverl5'])

gca get current axis 获取当前的轴

ax = plt.gca()
ax.spines['right'].set_color('none') #自定义右边的框 若要设置颜色将none改为red 或其他
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom') #获取当前的轴的位置
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0)) #将x轴的位置放到数据0的位置
ax.spines['left'].set_position(('data',0)) #将y轴的位置放到数据0的位置
plt.show()

图例的设置

x = np.linspace(-3,3,100)
y1 = 2x +1
y2 = x
*2

plt.xlim((-1,2))
plt.ylim((-2,3)) #限制xy的范围
plt.xlabel('I am X')
plt.ylabel('I am Y') #设置xy的名称

l1,=plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
l2,=plt.plot(x,y2,color='blue',linewidth=5.0,linestyle='-')
plt.legend(handles=[l1,l2],labels=['test1','test2'],loc='best')

new_ticks = np.linspace(-2,2,11)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-1,0,1,2,3],
['leverl1','leverl2','leverl3','leverl4','leverl5'])
plt.show()

给图片注释

x = np.linspace(-1,1,100)
y1 = 2x +1
y2 = x
*2

plt.xlim((-1,2))
plt.ylim((-2,3)) #限制xy的范围
plt.xlabel('I am X')
plt.ylabel('I am Y') #设置xy的名称
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='-')

new_ticks = np.linspace(-2,2,11)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-1,0,1,2,3],
['leverl1','leverl2','leverl3','leverl4','leverl5'])

gca get current axis 获取当前的轴

ax = plt.gca()
ax.spines['right'].set_color('none') #自定义右边的框 若要设置颜色将none改为red 或其他
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom') #获取当前的轴的位置
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0)) #将x轴的位置放到数据0的位置
ax.spines['left'].set_position(('data',0)) #将y轴的位置放到数据0的位置

x0 = 0.5
y0 = 2*x0 + 1
plt.scatter(x0,y0,s=50,color='b') #画点
plt.plot([x0,x0],[y0,0],'k--',lw=2) #画虚线 k--表示黑虚线 lw线宽
plt.annotate(r'2x+1=%s' % y0,xy=(x0,y0),xytext=(+30,-30),textcoords='offset points',fontsize=16,
arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
plt.text(-1,2.5,r'this\ is\ the\ text',fontdict={'size':'16','color':'r'})
plt.show()

散点图

x = np.random.normal(0,1,500)
y = np.random.normal(0,1,500)

plt.scatter(x,y,s=50,c='b',alpha=0.5)

plt.xlim((-2,-2))
plt.ylim((-2,-2))
plt.xticks(())
plt.yticks(()) #去掉轴的标注
plt.show()

直方图

x1= np.arange(10)
y1= 2**x1 + 10
plt.bar(x1,y1,facecolor='#9999ff',edgecolor='white') #为-y则是往下画直方图
for x1,y1 in zip(x1,y1): #zip是同时读取x y
plt.text(x1,y1,'%.2f' % y1,ha='center',va='bottom')
plt.show()

绘制等高线图

def f(x,y):
"""
计算高度的函数
:param x: 向量
:param y: 向量
:return: dim(x)dim(y)维的矩阵
"""
# the height function
return (1 - x / 2 + x
5 + y3) * np.exp(-x2 -y*2)
x = np.linspace(-3,3,100)
y = np.linspace(-3,3,100)

X,Y = np.meshgrid(x,y) # 获得网格坐标矩阵
plt.contourf(X,Y,f(X,Y),8,cmap=plt.cm.hot) # 进行颜色填充

c = plt.contour(X,Y,f(X,Y),8,colors='black') # 进行等高线绘制
plt.clabel(c,inline=True,fontsize=10) # 线条标注的绘制
plt.xticks(())
plt.yticks(())
plt.show()

绘制3d图 将代码复制到 ipython中shift +回车键 查看3d图

from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = Axes3D(fig)
x = np.arange(-4,4,0.2)
y = np.arange(-4,4,0.2)

X,Y = np.meshgrid(x,y)
R = np.sqrt(X2+Y2)
Z = np.sin(R)

cmap = plt.get_cmap('rainbow')
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=cmap)

ax.contourf(X,Y,Z,zdir='z',offset=-2.0020,cmap='rainbow')

ax.set_zlim(-2,-2)

plt.show()

绘制subplot

plt.figure()
plt.subplot(2,2,1) #两行两列的图 这个放第一个位置 或者去掉括号 (221)
plt.plot([0,1],[0,1])

plt.subplot(2,2,2)
plt.plot([0,1],[0,1])

plt.subplot(2,2,3)
plt.plot([0,1],[0,1])

plt.subplot(2,2,4)
plt.plot([0,1],[0,1])

plt.show()

大小不一的图片

plt.figure()
plt.subplot(2,1,1) #两行两列的图 这个放第一个位置 或者去掉括号 (221)
plt.plot([0,1],[0,1])

plt.subplot(2,3,4)
plt.plot([0,1],[0,1])

plt.subplot(2,3,5)
plt.plot([0,1],[0,1])

plt.subplot(2,3,6)
plt.plot([0,1],[0,1])
plt.show()

动态图

from matplotlib import animation
import matplotlib.pyplot as plt
import numpy as np
fig,ax = plt.subplots()

x= np.arange(0,2*np.pi,0.01)
line,= ax.plot(x,np.sin(x))

def animate(i):
line.set_ydata(np.sin(x+i/10))
return line,
def init():
line.set_ydata(np.sin(x))
return line,

ani = animation.FuncAnimation(fig=fig,func=animate,init_func=init,interval=20)
plt.show()

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • # -*- coding: utf-8 -*- from __future__ import division f...
    小豆角lch阅读 1,440评论 0 1
  • Matplotlib 是一个非常强大的 Python 画图工具;Matplotlib 支持线图;散点图;等高线图;...
    CAICAI0阅读 940评论 0 51
  • ### 一:基本知识 1. 第一层是底层的容器层,主要包括Canvas(画板)、Figure(画布)、Axes(绘...
    财务自由_lang阅读 322评论 0 0
  • matplotlib是PYTHON绘图的基础库,是模仿matlab绘图工具开发的一个开源库。 PYTHON其它第三...
    卅清阅读 681评论 0 0
  • 1.基本图形 散点图 plt.scatter(x,y,s=20,c='b',marker='') 折线图 plt....
    木木不彬阅读 6,856评论 0 4