matplotlib包画基本的图
Posted nolonely
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matplotlib包画基本的图相关的知识,希望对你有一定的参考价值。
画直线图
1.最简单的用法:
import matplotlib.pyplot as plt import numpy as np x=np.linspace(-3,3,50) #在(-1,1)范围内生成50个数,等分的, y=2*x+1 #一张图里画一条线 plt.figure() #如果是一张图里只有一条线,则使用它与不使用他差别不大,如果是在一张图里有2条或多条线,则使用它可以把两条线放在一个图里。 plt.plot(x,y) plt.show()
2.有的时候需要在一张图里画两条或多条线,这个时候就需要figure()
import matplotlib.pyplot as plt import numpy as np x=np.linspace(-3,3,50) #在(-1,1) y=2*x+1 y2=x**2 #一张图里化两条或多条线 plt.figure() plt.plot(x,y) plt.plot(x,y2) plt.show()
3.当设置坐标轴时,需要设置坐标轴的范围,单位长度,替换文字
import matplotlib.pyplot as plt import numpy as np x=np.linspace(-3,3,50) #在(-1,1)范围内生成50个数,等分的, y=2*x+1 y2=x**2 #修改图中的样式 plt.figure(num=3,figsize=(8,5))
plt.plot(x,y2)
plt.plot(x,y,color=\'red\',linewidth=2.0,linestyle=\'--\') #设置线段的颜色,长度,样式,注意linestyle的值只能是两个‘-’,不能是其他数量个#设置坐标轴,设置坐标轴的范围,长度,替换文字等
plt.xlim(-1,2) #设置x轴的范围
plt.ylim(-2,3) #设置y轴的范围
plt.xlabel("i am x!") #设置x轴的名称,解释
plt.ylabel("i am y!") #设置y轴的名称,解释
plt.show() #设置坐标轴的刻度的值为指定的值
new_ticks=np.linspace(-1,2,5)
print(new_ticks)
plt.xticks(new_ticks) #设置x轴的刻度和对应的名称
plt.yticks([-2,-1.8,-1,.22,3],[r\'$really\\ bad$\',r\'$bad$\',r\'$normal$\',r\'$good$\',r\'$really\\ good$\']) #设置y轴刻度和对应的名称
plt.show()
4.设置坐标轴之——设置坐标轴的位置
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50) #在(-1,1)范围内生成50个数,等分的,
y=2*x+1
y2=x**2
#修改图中的样式
plt.figure(num=3,figsize=(8,5))
#设置坐标轴原点 plt.plot(x,y2) plt.plot(x,y,color=\'red\',linewidth=2.0,linestyle=\'--\') 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,.22,3],[r\'$really\\ bad$\',r\'$bad$\',r\'$normal$\',r\'$good$\',r\'$really\\ good$\']) ax=plt.gca() ax.spines[\'right\'].set_color(\'none\') ax.spines[\'top\'].set_color(\'none\') ax.xaxis.set_ticks_position(\'bottom\') #.xaxis.set_ticks_position设置x坐标刻度数字或名称的位置:属性值有top,bottom,both,default,none ax.spines[\'bottom\'].set_position((\'data\',-1)) #设置边框位置,y=0的位置,即x轴绑定在y=1时的位置上 ax.yaxis.set_ticks_position(\'left\') #.yaxis.set_ticks_position设置x坐标刻度数字或名称的位置 ax.spines[\'left\'].set_position((\'data\',0)) #设置边框位置,x=0的位置,即y轴绑定在x=0时的位置上 plt.show()
5,图例设置
import matplotlib.pyplot as plt import numpy as np x=np.linspace(-3,3,50) #在(-1,1)范围内生成50个数,等分的, y=2*x+1 y2=x**2 #修改图中的样式 plt.figure(num=3,figsize=(8,5))
#设置图例 l1,=plt.plot(x,y2,label=\'linear line\') #label设置label的名字 ,注意l1,和l2,是以逗号结尾的,因为plt.plot返回的是一个列表 l2,=plt.plot(x,y,color=\'red\',linewidth=2.0,linestyle=\'--\',label=\'square line\') #label设置label的名字 plt.legend(handles=[l1,l2],labels=[\'up\',\'down\'],loc=\'best\') #将图例添加到图中的最佳位置 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,.22,3],[r\'$really\\ bad$\',r\'$bad$\',r\'$normal$\',r\'$good$\',r\'$really\\ good$\']) ax=plt.gca() ax.spines[\'right\'].set_color(\'none\') ax.spines[\'top\'].set_color(\'none\') plt.show()
其中loc参数有多种,best表示自动分配最佳位置,其余为
best->0
upper right->1
upper left->2
lower left->3
lower right->4
right->5
center left->6
center right->7
lower center->8
upper center->9
center->10
画散点图:
import matplotlib.pyplot as plt import numpy as np #data size n=1024 X=np.random.normal(0,1,n) #生成1024个数,其中平均数是0,方差是1 Y=np.random.normal(0,1,n) T=np.arctan2(Y,X) plt.scatter(X,Y,s=75,c=T,alpha=0.5)#大小是75,颜色是T,透明度是0.5,X,Y作为location plt.xlim(-1.5,1.5) plt.xticks(())#隐藏x轴 plt.ylim(-1.5,1.5) plt.yticks(()) #隐藏y轴 plt.show()
画柱状图
import matplotlib.pyplot as plt import numpy as np n=12 X=np.arange(n) #穗姐生成12个数字,x为0-11的整数,Y为相应的均匀分布的随机数据 Y1=(1-X/float(n)*np.random.uniform(0.5,1.0,n)) Y2=(1-X/float(n)*np.random.uniform(0.5,1.0,n)) plt.bar(X,+Y1,facecolor=\'#9999ff\',edgecolor=\'white\') #facecolar设置主题颜色,edgecolor设置边框颜色为白色 plt.bar(X,-Y2,facecolor=\'#ff9999\',edgecolor=\'white\') plt.xlim(-0.5,n) plt.xticks(()) #隐藏x轴 plt.ylim(-1.25,1.25) plt.yticks(()) #隐藏y轴 for x,y in zip(X,Y1): plt.text(x+0.4,y+0.05,\'%.2f\' %y,ha=\'center\',va=\'bottom\') for x,y in zip(X,Y2): #吧X,Y2分别传到x,y中 plt.text(x+0.4,-y-0.05,\'%.2f\' %-y,ha=\'center\',va=\'top\') #把数据标记在图上 plt.show()
以上是关于matplotlib包画基本的图的主要内容,如果未能解决你的问题,请参考以下文章
为啥代码片段在 matplotlib 2.0.2 上运行良好,但在 matplotlib 2.1.0 上引发错误