matplotlib学习笔记.docx
《matplotlib学习笔记.docx》由会员分享,可在线阅读,更多相关《matplotlib学习笔记.docx(56页珍藏版)》请在冰豆网上搜索。
matplotlib学习笔记
matplotlib学习记录:
曲线plot
图示:
知识点:
1、函数
plt.plot(x,y,ls="-",lw=2,label="plotfigure")
2、参数:
x:
x点
y:
y点
ls:
linestyle线形样式
**LineStyles**
============================================
characterdescription
============================================
``'-'``solidlinestyle
``'--'``dashedlinestyle
``'-.'``dash-dotlinestyle
``':
'``dottedlinestyle
============================================
label:
图例标签
3、x=np.linspace(0.5,10,1000)
在0.5到10之间生产1000个小数列表
4、显示图例
plt.legend()
5、显示图形
plt.show()
代码:
importmatplotlib.pyplotasplt
importnumpyasnp
x=np.linspace(0.5,10,1000)
y=np.cos(x)
plt.plot(x,y,ls="-",lw=2,label="plotfigure")
plt.legend()
plt.show()
matplotlib学习记录:
散点图scatter
图示:
知识点:
1、函数
x=np.linspace(0.5,10,1000)
y=np.random.rand(1000)
plt.scatter(x,y,c="r",label="scatterfigure")
2、c为颜色模式
#缩写模式
#b-蓝色g-绿色r-红色c-青色m-洋红色y-黄色k-黑色w-白色
plt.title("折线图",color="r")
#十六进制模式
plt.xlabel("x轴",color="#ccccff")
#CSS颜色名
plt.ylabel("y轴",color="red")
#Decimal模式
plt.text(2.75,0.2,"text",color=[0,0,0])
3、产生1000个范围在0~1之间的随机数
y=np.random.rand(1000)
4、x与y的数量一定要相等。
代码:
importmatplotlib.pyplotasplt
importnumpyasnp
x=np.linspace(0.5,10,1000)
y=np.random.rand(1000)
plt.scatter(x,y,c="r",label="scatterfigure")
plt.legend()
plt.show()
matplotlib学习记录:
函数xlim()和ylim()
图示:
知识点:
1、设置x轴显示的范围
plt.xlim(最小值,最大值)
2、设置y轴显示的范围
plt.ylim(最小值,最大值)
代码:
importmatplotlib.pyplotasplt
importnumpyasnp
x=np.linspace(0.5,10,1000)
y=np.random.rand(1000)
plt.scatter(x,y,c="r",label="scatterfigure")
plt.legend()
plt.xlim(4,10)#设置x轴显示的刻度范围在4-10
plt.ylim(0.2,0.8)#设置y轴显示的刻度范围在0.2-0.8
plt.show()
matplotlib学习记录:
设置x轴标签和y轴标签
图示:
知识点:
1、使中文可正常显示
importmatplotlibasmpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
2、设置x轴标签
plt.xlabel(“x轴标签”)
3、设置y轴标签
plt.ylabel(“y轴标签”)
代码:
importmatplotlib.pyplotasplt
importnumpyasnp
importmatplotlibasmpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
x=np.linspace(0.5,10,1000)
y=np.random.rand(1000)
plt.scatter(x,y,c="r",label="scatterfigure")
plt.legend()
plt.xlabel("x轴标签")
plt.ylabel("y轴标签")
plt.show()
matplotlib学习记录:
刻度线的网格线grid()
图示:
知识点:
1、显示刻度线的网格线
plt.grid(ls=”-.”,c=”r”)
代码:
importmatplotlib.pyplotasplt
importnumpyasnp
importmatplotlibasmpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
x=np.linspace(0.5,10,1000)
y=np.cos(x)
plt.plot(x,y,ls="-",lw=2,label="plotfigure")
plt.legend()
plt.grid(ls="-.",c="r")
plt.show()
matplotlib学习记录:
绘制平行于x轴的水平参考线axhline()
图标:
知识点:
1、绘制辅助线
plt.axhline(y=0.2,c="r",ls="-.",lw=2)
plt.axvline(x=7,c="b",ls="-.",lw=2)
2、axh是指平行于x轴,那么axv就是垂直于x轴
3、添加多条绘制辅助线的代码则会多画辅助线
代码:
importmatplotlib.pyplotasplt
importnumpyasnp
importmatplotlibasmpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
x=np.linspace(0.5,10,1000)
y=np.cos(x)
plt.plot(x,y,ls="-",lw=2,label="plotfigure")
plt.legend()
plt.axhline(y=0.2,c="r",ls="-.",lw=2)
plt.axvline(x=7,c="b",ls="-.",lw=2)
plt.axvline(x=7,c="b",ls="-.",lw=2)
plt.show()
matplotlib学习记录:
绘制平行于x轴的参考区域
图示:
知识点:
1、创建辅助区域
plt.axhspan(ymin=0,ymax=0.25,facecolor="y",alpha=0.5)
plt.axvspan(xmin=4,xmax=5,facecolor="r",alpha=0.3)
2、xh是指平行于x轴,所以需要指定y轴的一个值区域,而xv是指垂直于x轴,所以指定x轴的xmin和xmax
3、参数:
facecolor="y":
设置辅助区域的颜色
alpha=0.5:
透明度
4、如果添加多条创建语句,会创建多条辅助区域
代码:
importmatplotlib.pyplotasplt
importnumpyasnp
importmatplotlibasmpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
x=np.linspace(0.5,10,1000)
y=np.cos(x)
plt.plot(x,y,ls="-",lw=2,label="plotfigure")
plt.legend()
plt.axhspan(ymin=0,ymax=0.25,facecolor="y",alpha=0.5)
plt.axvspan(xmin=4,xmax=5,facecolor="r",alpha=0.3)
plt.axvspan(xmin=6,xmax=7,facecolor="r",alpha=0.3)
plt.show()
matplotlib学习记录:
添加带有箭头的注释文本annotate()
图标:
知识点:
1、创建注释
plt.annotate("注释文本",#注释内容
xy=(np.pi/2,1),#箭头指向的坐标
size=20,#字号
xytext=((np.pi/2)+1,0.8),#注释文本坐标
weight="bold",#加粗
color="b",#颜色
arrowprops=dict(
arrowstyle="->",#箭头样式
connectionstyle="arc3",#连接样式
color="b"#颜色
))
2、参数:
arrowstyle代表指示线样式:
-,<-,->,<->,<|-,-|>,<|-|>,]-,-[,]-[,|-|,simple,fancy,wedge
connectionstyle:
angle,angleA=0,angleB=75,rad=5
angleA注解文本方
angleB箭头指向方
rad转角圆弧半径
----------------
angle3,angleA=20,angleB=70
由A与B的角度自然形成圆弧
-----------------
arc,angleA=180,armA=50,angleB=90,armB=50,rad=5
armA臂长
---------------------
arc3,rad=0.1
rad直线连接与圆弧的距离
---------------------
bar,armA=50,armB=50,fraction=0.1
armA与armB数字同时起作用
fraction会与arm进行累加
代码:
importmatplotlib.pyplotasplt
importnumpyasnp
importmatplotlibasmpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
x=np.linspace(0.05,10,1000)
y=np.sin(x)
plt.plot(x,y,ls="-",lw=2,label="plotfigure")
plt.legend()
plt.annotate("注释文本",#注释内容
xy=(np.pi/2,1),#箭头指向的坐标
size=20,#字号
xytext=((np.pi/2)+1,0.8),#注释文本坐标
weight="bold",#加粗
color="b",#颜色
arrowprops=dict(
arrowstyle="->",#箭头样式
connectionstyle="arc3",#连接样式
color="b"#颜色
))
plt.show()
matplotlib学习记录:
添加没有箭头的文本text
图示:
知识点:
1、创建
plt.text(5,0,"y=sin(x)",weight="bold",c="r",size=16)
2、参数:
在坐标为(5,0)的位置添加一个文本,颜色为红色,字号16
3、matplotlib中很多参数都是通用的,可以去尝试之前有介绍过的参数,比如这个text中也可以添加alpha参数的。
代码:
importmatplotlib.pyplotasplt
importnumpyasnp
importmatplotlibasmpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
x=np.linspace(0.05,10,1000)
y=np.sin(x)
plt.plot(x,y,ls="-",lw=2,label="plotfigure")
plt.legend()
plt.text(5,0,"y=sin(x)",weight="bold",c="r",size=16,alpha=0.5)
plt.show()
matplotlib学习记录:
标题title()
图示:
知识点:
1、plt.title(“标题文本”,loc=”center”)
2、loc参数:
(不同元素的loc有不同的值)
center,right,left
代码:
importmatplotlib.pyplotasplt
importnumpyasnp
importmatplotlibasmpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
x=np.linspace(0.05,10,1000)
y=np.sin(x)
plt.plot(x,y,ls="-",lw=2,label="plotfigure")
plt.legend()
plt.text(5,0,"y=sin(x)",weight="bold",c="r",size=16,alpha=0.5)
plt.title("这是sin曲线",loc="right")
plt.show()
matplotlib学习记录:
图例lengend()
图示:
知识点:
1、显示图例
plt.legend(loc=4)
2、loc参数,可以取字符串,也可以取数字,但数字不要带引号
0best
1upperright
2upperleft
3lowerleft
4lowerright
5right
6centerleft
7centerright
8lowercenter
9uppercenter
10center
代码:
importmatplotlib.pyplotasplt
importnumpyasnp
importmatplotlibasmpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
x=np.linspace(0.05,10,1000)
y=np.sin(x)
plt.plot(x,y,ls="-",lw=2,label="plotfigure")
plt.legend(loc=4)#lowerright右下
plt.show()
matplotlib学习记录:
综合图例:
matplotlib结构
图示:
代码:
importmatplotlib.pyplotasplt
importnumpyasnp
importmatplotlibasmpl
frommatplotlibimportcmascm
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
#定义数据
x=np.linspace(0.5,3.5,100)
y=np.sin(x)
y1=np.random.randn(100)
#散点图
plt.scatter(x,y1,c="0.25",label="散点图")
#曲线
plt.plot(x,y,ls="--",lw=2,label="sin曲线")
forspineinplt.gca().spines.keys():
ifspine=="top"orspine=="right":
plt.gca().spines[spine].set_color("none")
plt.gca().xaxis.set_ticks_position("bottom")
plt.gca().yaxis.set_ticks_position("left")
plt.xlim(0,4)#设置x轴范围
plt.ylim(-3,3)#设置y轴范围
plt.ylabel("y轴")#设置标签
plt.xlabel("x轴")#设置标签
#设置网格线
plt.grid(True,ls=":
",color="r")
#添加平行于x轴的辅助线
plt.axhline(y=0,c="r",ls="--",lw=2)
#添加垂直于x轴的区域
plt.axvspan(xmin=1,xmax=2,facecolor="y",alpha=0.3)
#添加带有箭头的注释
plt.annotate("maximum",
xy=(np.pi/2,1),
xytext=((np.pi/2)+0.15,1.5),
weight="bold",
color="b",
arrowprops=dict(
arrowstyle="->",
connectionstyle="arc3",
color="r"
))
plt.annotate("spines",
xy=(0.75,-3),
xytext=(0.35,-2.25),
weight="bold",
color="b",
arrowprops=dict(
arrowstyle="->",
connectionstyle="arc3",
color="b"
))
plt.annotate("",
xy=(0,-2.78),
xytext=(0.4,-2.32),
weight="bold",
color="b",
arrowprops=dict(
arrowstyle="->",
connectionstyle="arc3",
color="b"
))
plt.annotate("",
xy=(3.5,-2.98),
xytext=(3.6,-2.7),
weight="bold",
color="b",
arrowprops=dict(
arrowstyle="->",
connectionstyle="arc3",
color="b"
))
plt.text(3.6,-2.7,"'|'istickline",weight="bold",color="b")
plt.text(3.6,-2.95,"3.5istickline",weight="bold",color="b")
plt.title("matplotlib结构")
plt.show()
matplotlib学习记录:
柱状图bar()
图示:
知识点:
1、从数据库中得到数据
先定义了一个sql语句:
sql="SELECTMONTH(经营部下单日期),COUNT
(1)FROM合同评审WHERE经营部下单日期BETWEEN'{}-01-01'AND'{}-12-31'GROUPBYMONTH(经营部下单日期)ORDERBYMONTH(经营部下单日期)".format(年份,年份)
然后调用了一个mdb_query()方法:
result_list=db.mdb_query(sql)
db.py中封装了连接数据库、查询数据库、执行数据库操作的语句:
#-*-coding:
utf-8-*-
__author__='86****20'
#导入模块
importpymssql
#定义conn
defmdb_conn():
conn=pymssql.connect(ip,username,password,databasename)
returnconn
#增删改
defmdb_sqlext(sql):
try:
conn=mdb_conn()
cur=conn.cursor()
cur.execute(sql)
mit()
cur.close()
conn.close()
returnTrue
except:
returnFalse
#查询记录
defmdb_query(sql):
try:
conn=mdb_conn()
cur=conn.cursor()
cur.execute(sql)
result=cur.fetchall()
cur.close()
conn.close()
returnresult
exceptExceptionase:
print(e)
return[]
返回的数量是一个列表,列表中每一项元组,序号0对应MONTH(经营部下单日期),这是月份,序号1对应COUNT
(1),这是合同数量。
使用列表推导式将每项的[0]元素取出,即月份
x=[i[0]foriinresult_list]
再得到[1]为订单数合计
y=[i[1]foriinresult_list]
x轴的标签是月份,正好跟x一样
xlabel=[i[0]foriinresult_li