【存档】python学习笔记——matplotlib

Matplotlib是建立在Numpy基础之上的python绘图库。Matplotlib是python中常用的可视化工具之一,可以非常的方便的创建海量类型2D图标和一些基本的3D图标。


1.导入模块:

①from matplotlib import pylab

导入pyplot和numpy模块

②import matplotlib.pyplot as plt

仅导入plt,(常用)

2.基本绘图

import matplotlib.pyplotas plt

import numpy as np

x = np.linspace(-10,10,100)

y=np.sin(x)

plt.plot(x,y,ls="-",lw="2",c="k")

plt.show()

np.linspace(a,b,num=c)创建指定间隔内均匀间隔数字的一维数组——a为起始值,b为结束值,c为数组元素个数,即-10到10之间均匀的取100个数。plot()展现变量的趋势变化。通过show()展示绘制图形

①plot()——展示变量的趋势变化,主要展示折线、散点图

参数为:

x:x轴上的数值

y:y轴上的数值(x,y的数量要一样)

第三个参数可以设置散点图‘o’或者颜色等各种各样的样式,可以同时传入多个参数

ls:折线图的线条风格

lw:折线图的线条宽度(一个值)

c:折线图颜色  

①plt.plot(x,y,ls=":",lw="2",c="k")

②plt.plot(x,y,"rv")

③plt.plot(x,y,"*y")

    ·绘制多条曲线:

x = np.linspace(0,10,100)

y=np.sin(x)

plt.plot(x,y)

plt.plot(x,x+2)

plt.plot(x,np.log2(x))

plt.show()

多个曲线

②寻找变量之间的关系

plt.scatter()

参数:x,y轴上的数值,c散点图的标记颜色

x=np.linspace(0.05,10,1000)

y=np.random.rand(1000)

plt.scatter(x,y,c='b')

plt.show()

③xlim(),ylim()——设置x(y)轴的数值显示范围


xmin:x轴上最小值;ymin:y轴上最小值


④xlabel(string),ylabel(string)——设置x(y)轴的标签文本

x=np.linspace(0,10)

y = x**2

plt.xlabel("x")

plt.ylabel("y")

plt.title("nap")

plt.minorticks_on()

plt.plot(x,y,color='red')

plt.show()

string为x(y)轴上显示的文本

⑤grid()——绘制刻度线网格线

x=np.linspace(0,10)

y = x**2

plt.grid(ls=':',c='y')

plt.plot(x,y,c='b')

plt.show()

⑥axhline(),axvline()——绘制平行于x(y)轴的水平参考线

参数:

y(x):水平参考线出发点

c:颜色

ls:参考线线条风格

lw:参考线的线条宽度

x=np.linspace(0,10)

y = x**2

plt.axhline(y=40,c='r',ls=":",lw=2)

plt.axvline(x=6,c='r',ls=":",lw=2)

plt.plot(x,y,label ="plot figure")

plt.legend()

plt.show()

⑦axvspan(),axhspan()——绘制垂直于x轴的参考区域

参数:

x(y)min:参考区域的起始位置

x(y)max:参考区域的终止位置

facecolor:区域颜色

alpha:透明度

x=np.linspace(0,10)

y = x**2

# plt.axhline(y=40,c='r',ls=":",lw=2)

# plt.axvline(x=6,c='r',ls=":",lw=2)

plt.axvspan(xmin=6,xmax=8,facecolor="y",alpha=0.3)

plt.axhspan(ymin=40,ymax=60,facecolor="y",alpha=0.3)

plt.plot(x,y,label ="plot figure")

plt.legend()

plt.show()

⑧annotate()——添加图形内容细节的指向型注释文本

参数:

string:文本内容

xy:备注的图形内容的位置坐标

xytext:注释文本的坐标位置

weight:文本字体粗细风格

color:文本字体颜色

arrowprops:只是被注释内容的箭头属性字典

x=np.linspace(0,10)

y = x**2

plt.plot(x,y,label="x^2",c="b")

plt.legend()

plt.annotate("(1,1)",xy=(1,1),xytext=(1.5,6),color="b",arrowprops=dict(arrowstyle='->',connectionstyle='arc3',color='b'))

plt.show()

⑨text()——添加图形内容细节的无指向性注释文本

plt.text(x,y,string,weight="",color="")

x=np.linspace(0,10)

y = x**2

plt.plot(x,y,label="x^2",c="b")

plt.legend()

plt.text(4,30,"y=x^2",color='b')

plt.show()

⑩title()——添加图形内容标题

plt.title(string)

x=np.linspace(0,10)

y = x**2

plt.plot(x,y,label="x^2",c="b")

plt.legend()

plt.text(4,30,"y=x^2",color='b')

plt.title("y=x^2")

plt.show()

·legend()——表示不同图形的文本标签图例

plt.legend(loc='')

loc:图例在图中的地理位置


3.pyplot的基础图标函数如下


基础图标绘制

①饼图:

labels=[u"第一部分",u"第二部分",u"第三部分",u"第四部分"]

sizes=[15,30,45,10]

colors=['red','yellow','blue','green']

#每个标签的大小,百分比会自动算

explode=(0,0.1,0,0)

#将某部分分出来,使用括号,用数值表示分割出来的与其他几块的间隙

plt.figure(figsize=(6,9))

#调节图形大小宽高

figl,axl=plt.subplots()

plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',startangle=90)

plt.axis('equal')

plt.show()



②直方图

plt.hist(x)

x:在x轴上绘制箱体的定量输入值

a=np.random.normal(100,20,size=100)

plt.hist(a,20,density=True,histtype='stepfilled',facecolor='b',alpha=0.75)

plt.title('histogram')

plt.show()

③极线图

plt.polar(theta,r)

theta:每个标记所在射线与极经的夹角

r:每个标记到原点的距离

theta=np.linspace(0.0,2*np.pi,15,endpoint=False)

r=30*np.random.rand(15)

plt.polar(theta,r,color='#6BBBEC',linewidth=2,marker='*',mfc='b',ms=10,linestyle=':')

plt.show()

④柱状图

plt.bar(x,y)

x=[1,2,3,4,5,6,7,8]

y=[3,1,4,5,8,9,7,2]

plt.bar(x,y,align='center',color='c',tick_label=["q","a","c","e","r","j","b","p"],hatch='/')

plt.show()





4.Matplotlib绘图区域:

plt.subplot(nrows,ncols,plot_number)

plot_number

plt.subplot(2,2,3)

a=np.random.normal(100,20,size=100)

plt.hist(a,20,density=True,histtype='stepfilled',facecolor='b',alpha=0.75)

plt.title('histogram')

plt.subplot(2,2,2)

labels=[u"第一部分",u"第二部分",u"第三部分",u"第四部分"]

sizes=[15,30,45,10]

colors=['red','yellow','blue','green']

#每个标签的大小,百分比会自动算

explode=(0,0.1,0,0)

#将某部分分出来,使用括号,用数值表示分割出来的与其他几块的间隙

plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',startangle=90)

plt.axis('equal')

plt.subplot(2,2,1)

x=np.linspace(-5,5,100)

y=x**2

plt.plot(x,y,'-',c='b')

plt.subplot(2,2,4)

x=np.linspace(-5,5,100)

y=np.random.rand(100)

plt.scatter(x,y)

plt.show()

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