python matplotlib画图

合集下载

Python利用matplotlib模块数据可视化绘制3D图

Python利用matplotlib模块数据可视化绘制3D图

Python利⽤matplotlib模块数据可视化绘制3D图⽬录前⾔1matplotlib绘制3D图形2绘制3D画⾯图2.1源码2.2效果图3绘制散点图3.1源码3.2效果图4绘制多边形4.1源码4.2效果图5三个⽅向有等⾼线的3D图5.1源码5.2效果图6三维柱状图6.1源码6.2效果图7补充图7.1源码7.2效果图总结前⾔matplotlib实际上是⼀套⾯向对象的绘图库,它所绘制的图表中的每个绘图元素,例如线条Line2D、⽂字Text、刻度等在内存中都有⼀个对象与之对应。

为了⽅便快速绘图matplotlib通过pyplot模块提供了⼀套和MATLAB类似的绘图API,将众多绘图对象所构成的复杂结构隐藏在这套API内部。

我们只需要调⽤pyplot模块所提供的函数就可以实现快速绘图以及设置图表的各种细节。

pyplot模块虽然⽤法简单,但不适合在较⼤的应⽤程序中使⽤。

为了将⾯向对象的绘图库包装成只使⽤函数的调⽤接⼝,pyplot模块的内部保存了当前图表以及当前⼦图等信息。

当前的图表和⼦图可以使⽤plt.gcf()和plt.gca()获得,分别表⽰"Get Current Figure"和"Get Current Axes"。

在pyplot模块中,许多函数都是对当前的Figure或Axes对象进⾏处理,⽐如说:plt.plot()实际上会通过plt.gca()获得当前的Axes对象ax,然后再调⽤ax.plot()⽅法实现真正的绘图。

可以在Ipython中输⼊类似"plt.plot??"的命令查看pyplot模块的函数是如何对各种绘图对象进⾏包装的。

1 matplotlib绘制3D图形matplotlib可以绘制3D图形,有的版本中不具备该模块,可以进⼊python环境,输⼊from mpl_toolkits.mplot3d import Axes3D 进⾏测试,如果导⼊成功则可以,否则需要安装matplotlib其他版本,这⾥我⽤的是2.0.2版本。

Pythonmatplotlib绘图可视化知识点整理(小结)

Pythonmatplotlib绘图可视化知识点整理(小结)

Pythonmatplotlib绘图可视化知识点整理(⼩结)⽆论你⼯作在什么项⽬上,IPython都是值得推荐的。

利⽤ipython --pylab,可以进⼊PyLab模式,已经导⼊了matplotlib库与相关软件包(例如Numpy和Scipy),额可以直接使⽤相关库的功能。

本⽂作为学习过程中对matplotlib⼀些常⽤知识点的整理,⽅便查找。

这样IPython配置为使⽤你所指定的matplotlib GUI后端(TK/wxPython/PyQt/Mac OS X native/GTK)。

对于⼤部分⽤户⽽⾔,默认的后端就已经够⽤了。

Pylab模式还会向IPython引⼊⼀⼤堆模块和函数以提供⼀种更接近MATLAB的界⾯。

import matplotlib.pyplot as pltlabels='frogs','hogs','dogs','logs'sizes=15,20,45,10colors='yellowgreen','gold','lightskyblue','lightcoral'explode=0,0.1,0,0plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True,startangle=50)plt.axis('equal')plt.show()matplotlib图标正常显⽰中⽂为了在图表中能够显⽰中⽂和负号等,需要下⾯⼀段设置:import matplotlib.pyplot as pltplt.rcParams['font.sas-serig']=['SimHei'] #⽤来正常显⽰中⽂标签plt.rcParams['axes.unicode_minus']=False #⽤来正常显⽰负号matplotlib inline和pylab inline可以使⽤ipython --pylab打开ipython命名窗⼝。

pyhton中matplotlib箱线图的绘制(matplotlib双轴图、箱线图、散点图。。。

pyhton中matplotlib箱线图的绘制(matplotlib双轴图、箱线图、散点图。。。

pyhton中matplotlib箱线图的绘制(matplotlib双轴图、箱线图、散点图。

//2019.07.23,它主要包含五个基础数据:中位数,两个上下分位数以及上下边缘线数据其中的⼀些参数具体含义及其计算过程如下:2、双轴图的绘制代码:import numpy as npimport matplotlib.pyplot as pltimport pandas as pdplt.rcParams["font.sans-serif"]=["SimHei"] #输出图像的标题可以为中⽂正常输出plt.rcParams["axes.unicode_minus"]=False #可以正常输出图线⾥的负号import warningswarnings.filterwarnings("ignore") #忽略相应的警告信息df=pd.read_excel("D:/Byrbt2018/Study/Python数据分析课程+练习+讲解/Python数据分析课程+练习+讲解/作业/作业4/作业4/酒店数据1.xlsx")#导⼊w我们的表格数据⽂件print(df)print(df.index)print(df.columns)d=df[:5]fig=plt.figure(figsize=(10,8))ax1=fig.add_subplot(1,1,1)n,bins,patches=ax1.hist(df["评分"],bins=100,color="m")ax1.set_ylabel("电影数量",fontsize=15)ax1.set_xlabel("评分",fontsize=15)ax1.set_title("频率分布直⽅图",fontsize=20)y=mlab.normpdf(bins,df["评分"].mean(),df["评分"].std()) #⽣成正态分布函数ax2=ax1.twinx() #定义新的双轴图函数ax2.plot(bins,y,"b--")ax2.set_ylabel("概率分布",fontsize=15)y=df["评分"][::10] #隔10个点进⾏选取数据点plt.figure(2)plt.scatter(x,y,color="r",marker="p") #散点图函数图像输出plt.xlabel("评分",fontsize=15)plt.ylabel("评分⼈数",fontsize=15)",fontsize=20)"]["评分"]print(d)plt.figure(4)plt.boxplot(d,whis=1.5,flierprops={"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"})#箱线图的格式设置和调整",fontsize=17)"]["评分"]d2=df[df.类型=="地铁周边"]["评分"]d3=df[df.类型=="休闲度假"]["评分"]d4=df[df.类型=="海滨风光"]["评分"]d5=df[df.类型=="交通⽅便"]["评分"]d6=df[df.类型=="商务出⾏"]["评分"]plt.figure(5)plt.boxplot([d1,d2,d3,d4,d5,d6],labels=["浪漫情侣","地铁周边","休闲度假","海滨风光","交通⽅便","商务出⾏"],whis=1.5,flierprops= {"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"},vert=True) #多组数据分布特征⽐较,vert决定了整体图像的横向与纵向#坐标轴的编辑与改变ax=plt.gca() #坐标轴的编辑与改变ax.patch.set_facecolor("white") #设置坐标轴的背景颜⾊ax.patch.set_alpha(0.3) #设置配⾊和透明度plt.title("不同类型酒店的评分箱线图",fontsize=20)plt.xlabel("酒店类型",fontsize=15)plt.ylabel("评分⼤⼩",fontsize=15)#相关系数矩阵图df1=df[["评分","评分⼈数"]]df1["排序"]=np.random.randint(1,100,396)print(df1)r1=pd.scatter_matrix(df1,diagonal="kde",color="k",alpha=0.3,figsize=(10,10))#对于多个数据减的散点图绘制函数参数设置,diagonal表⽰对⾓线图像kde/hist(数据密度图或者直⽅图选择)corr=df1.corr()corr=abs(corr)ax=plt.figure(figsize=(10,8))ax=sns.heatmap(corr,vmax=1,vmin=0,annot=True,annot_kws={"size":13,"weight":"bold"},linewidth=0.05)plt.xticks(fontsize=15)plt.yticks(fontsize=15)plt.xlabel("数据名称",fontsize=15)plt.ylabel("数据名称",fontsize=15)plt.title("不同数据间相关系数矩阵图",fontsize=20)plt.show()整体运⾏代码如下:import numpy as npimport matplotlib.pyplot as pltimport pandas as pdplt.rcParams["font.sans-serif"]=["SimHei"] #输出图像的标题可以为中⽂正常输出plt.rcParams["axes.unicode_minus"]=False #可以正常输出图线⾥的负号import warningswarnings.filterwarnings("ignore") #忽略相应的警告信息df=pd.read_excel("D:/Byrbt2018/Study/Python数据分析课程+练习+讲解/Python数据分析课程+练习+讲解/作业/作业4/作业4/酒店数据1.xlsx")#导⼊w我们的表格数据⽂件print(df)print(df.index)print(df.columns)d=df[:5]print(d)#双轴图的绘制.twinx()import matplotlib.mlab as mlabfig=plt.figure(figsize=(10,8))ax1=fig.add_subplot(1,1,1)n,bins,patches=ax1.hist(df["评分"],bins=100,color="m")ax1.set_ylabel("电影数量",fontsize=15)ax1.set_xlabel("评分",fontsize=15)ax1.set_title("频率分布直⽅图",fontsize=20)y=mlab.normpdf(bins,df["评分"].mean(),df["评分"].std()) #⽣成正态分布函数ax2=ax1.twinx() #定义新的双轴图函数ax2.plot(bins,y,"b--")ax2.set_ylabel("概率分布",fontsize=15)#散点图的绘制plt.scatter(x,y)绘制散点图x=df["评分⼈数"][::10]y=df["评分"][::10] #隔10个点进⾏选取数据点plt.figure(2)plt.scatter(x,y,color="r",marker="p") #散点图函数图像输出plt.xlabel("评分",fontsize=15)plt.ylabel("评分⼈数",fontsize=15)plt.title("酒店评分与⼈数散点图",fontsize=20)#箱线图的绘制d=df[df.类型=="商务出⾏"]["评分"]print(d)plt.figure(4)plt.boxplot(d,whis=1.5,flierprops={"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"})#箱线图的格式设置和调整plt.title("商务出⾏酒店的评分数据分布",fontsize=17)#多组数据的箱线图d1=df[df.类型=="浪漫情侣"]["评分"]d2=df[df.类型=="地铁周边"]["评分"]d3=df[df.类型=="休闲度假"]["评分"]d4=df[df.类型=="海滨风光"]["评分"]d5=df[df.类型=="交通⽅便"]["评分"]d6=df[df.类型=="商务出⾏"]["评分"]plt.figure(5)plt.boxplot([d1,d2,d3,d4,d5,d6],labels=["浪漫情侣","地铁周边","休闲度假","海滨风光","交通⽅便","商务出⾏"],whis=1.5,flierprops={"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"} ,vert=True) #多组数据分布特征⽐较,vert决定了整体图像的横向与纵向#坐标轴的编辑与改变ax=plt.gca() #坐标轴的编辑与改变ax.patch.set_facecolor("white") #设置坐标轴的背景颜⾊ax.patch.set_alpha(0.3) #设置配⾊和透明度plt.title("不同类型酒店的评分箱线图",fontsize=20)plt.xlabel("酒店类型",fontsize=15)plt.ylabel("评分⼤⼩",fontsize=15)#相关系数矩阵图df1=df[["评分","评分⼈数"]]df1["排序"]=np.random.randint(1,100,396)print(df1)r1=pd.scatter_matrix(df1,diagonal="kde",color="k",alpha=0.3,figsize=(10,10))#对于多个数据减的散点图绘制函数参数设置,diagonal表⽰对⾓线图像kde/hist#相关系数热⼒图import seaborn as snscorr=df1.corr()corr=abs(corr)ax=plt.figure(figsize=(10,8))ax=sns.heatmap(corr,vmax=1,vmin=0,annot=True,annot_kws={"size":13,"weight":"bold"},linewidth=0.05)plt.xticks(fontsize=15)plt.yticks(fontsize=15)plt.xlabel("数据名称",fontsize=15)plt.ylabel("数据名称",fontsize=15)plt.title("不同数据间相关系数矩阵图",fontsize=20)plt.show()输出结果如下:。

PythonMatplotlib基于networkx画关系网络图

PythonMatplotlib基于networkx画关系网络图

PythonMatplotlib基于networkx画关系⽹络图前⾔昨天才开始接触,⿎捣了⼀个下午,接下来会持续更新,如果哪⾥有错误的地⽅,望各位⼤佬指出,谢谢!数据描述两个⽂件,⼀个⽂件包含了⽹络图的节点,节点存在类别(0,1,2,3)四类,但是0类别舍去,不画出;另⼀个⽂件包含了⽹络图的边,数据基本特征如下:图1中,id表⽰节点,b是类别;图2中,两个数字表⽰边连接的两个点。

Networkx安装我的系统是Mac OS,直接在terminal输⼊sudo pip install networkx就可以安装,由于代码中涉及⼏个函数,在python3中会报错,我⽤python2.7.13实现的基本使⽤⽅法import networkx as nx #导⼊networkx包import matplotlib.pyplot as plt #导⼊绘图包matplotlib(需要安装,⽅法见第⼀篇笔记)G =nx.random_graphs.barabasi_albert_graph(100,1) #⽣成⼀个BA⽆标度⽹络Gnx.draw(G) #绘制⽹络Gplt.savefig("ba.png") #输出⽅式1: 将图像存为⼀个png格式的图⽚⽂件plt.show() #输出⽅式2: 在窗⼝中显⽰这幅图像参数介绍基本- `node_size`: 指定节点的尺⼨⼤⼩(默认是300,单位未知,就是上图中那么⼤的点)- `node_color`: 指定节点的颜⾊ (默认是红⾊,可以⽤字符串简单标识颜⾊,例如'r'为红⾊,'b'为绿⾊等,具体可查看⼿册)- `node_shape`: 节点的形状(默认是圆形,⽤字符串'o'标识,具体可查看⼿册)- `alpha`: 透明度 (默认是1.0,不透明,0为完全透明)- `width`: 边的宽度 (默认为1.0)- `edge_color`: 边的颜⾊(默认为⿊⾊)- `style`: 边的样式(默认为实现,可选: solid|dashed|dotted,dashdot)- `with_labels`: 节点是否带标签(默认为True)- `font_size`: 节点标签字体⼤⼩ (默认为12)- `font_color`: 节点标签字体颜⾊(默认为⿊⾊)布局circular_layout:节点在⼀个圆环上均匀分布random_layout:节点随机分布shell_layout:节点在同⼼圆上分布spring_layout:⽤Fruchterman-Reingold算法排列节点spectral_layout:根据图的拉普拉斯特征向量排列节点代码# coding:utf-8import networkx as nximport matplotlib.pyplot as pltimport csvwith open('node-8.csv','rb') as csvfile:reader = csv.DictReader(csvfile)column = [row['b'] for row in reader]id_tag0 = [row['id'] for row in reader]#print columnid_tag = []for item in id_tag0:id_tag.append(int(item))# =================Setting node parameters====================node_0 = []node_1 = []node_2 = []node_3 = []node_color = []node_color_y = []node_color_r = []node_color_g = []node_color_b = []node_shape = []node_shape_0 = []node_shape_1 = []node_shape_2 = []node_shape_3 = []for i in range(len(column)):if int(column[i]) == 0:passelif int(column[i]) == 1:color = 'r'shape = 'o'node_1.append(i)node_color_r.append(color)node_shape_1.append(shape)elif int(column[i]) == 2:color = 'g'shape = 'o'node_2.append(i)node_color_g.append(color)node_shape_2.append(shape)else:color = 'b'shape = '*'node_3.append(i)node_color_b.append(color)node_shape_3.append(shape)node_color.append(color)node_shape.append(shape)# ============================================================== with open('node-8.csv','rb') as csvfile:reader = csv.DictReader(csvfile)column1 = [row['b'] for row in reader]id_tag1 = [row['id'] for row in reader]#print columnid_tag11 = []for item in id_tag1:id_tag11.append(int(item))edge = []with open('edge-8.txt','r') as f:data = f.readlines()for line in data:#print lineline = tuple(line.replace('\r','').replace('\n','').replace('\t','').split(','))edge.append(line)#print edge# ===============Setting edge parameters========================= edge_color = []edge_style = []for item in edge:#print itemif int(column1[int(item[0])]) == 0 or int(column1[int(item[1])]) == 0:passelif int(column1[int(item[0])]) == 1 or int(column1[int(item[1])]) == 1:color = 'r'#style0 = 'dashdot'#color_r_list.append(color)elif int(column1[int(item[0])]) == 2 or int(column1[int(item[1])]) == 2:color = 'g'#style0 = 'dashed'#color_r_list.append(color)else:color = 'b'#style0 = 'dotted'#color_b_list.append(color)edge_color.append(color)#edge_style.append(style0)G = nx.Graph()#G.add_nodes_from(id_tag)G.add_edges_from(edge)#nx.draw(G,pos=nx.random_layout(G), nodelist = node_0, node_color = node_color_y, node_size=120, node_shape=node_shape_0)#nx.draw(G,pos=nx.random_layout(G), nodelist = node_1, node_color = node_color_r, node_size=120, node_shape=node_shape_1)#nx.draw(G,pos=nx.random_layout(G), nodelist = node_2, node_color = node_color_g, node_size=120, node_shape=node_shape_2)#nx.draw(G,pos=nx.random_layout(G), nodelist = node_3, node_color = node_color_b, node_size=120, node_shape=node_shape_3)nx.draw_networkx(G,pos=nx.random_layout(G),node_color=node_color,node_size=10,node_shape='o',edge_color=edge_color,width=0.3,style='solid',font_size=8) #nx.draw_networkx(G,pos=nx.random_layout(G),nodelist = node_1,node_color=node_color,node_size=100,node_shape='o',style='dashdot')#nx.draw_networkx(G,pos=nx.random_layout(G),node_color=color_g_list,node_size=150,node_shape='^',style='dashed')#nx.draw_networkx(G,pos=nx.random_layout(G),node_color=color_b_list,node_size=150,node_shape='*',style='dotted')#plt.legend()#nx.draw_networkx(G)plt.show()画图以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

使用Pythonmatplotlib作图时,设置横纵坐标轴数值以百分比(%)显示

使用Pythonmatplotlib作图时,设置横纵坐标轴数值以百分比(%)显示

使⽤Pythonmatplotlib作图时,设置横纵坐标轴数值以百分⽐(%)显⽰⼀、当我们⽤Python matplot时作图时,⼀些数据需要以百分⽐显⽰,以更⽅便地对⽐模型的性能提升百分⽐。

⼆、借助matplotlib.ticker.FuncFormatter(),将坐标轴格式化。

例⼦:# encoding=utf-8import matplotlib.pyplot as pltfrom matplotlib.ticker import FuncFormatterplt.rcParams['font.family'] = ['Times New Roman']plt.rcParams.update({'font.size': 8})x = range(11)y = range(11)plt.plot(x, y)plt.show()图形显⽰如下:现在我们将横纵坐标变成百分⽐形式即,0%,20%,40%....代码如下:# encoding=utf-8import matplotlib.pyplot as pltfrom matplotlib.ticker import FuncFormatterplt.rcParams['font.family'] = ['Times New Roman']plt.rcParams.update({'font.size': 8})x = range(11)y = range(11)plt.plot(x, y)def to_percent(temp, position):return '%1.0f'%(10*temp) + '%'plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))plt.gca().xaxis.set_major_formatter(FuncFormatter(to_percent))plt.show()即增加了10~13的代码,执⾏结果如下:可见已经实现我们的需求。

python强大的绘图模块matplotlib示例讲解

python强大的绘图模块matplotlib示例讲解

python强⼤的绘图模块matplotlib⽰例讲解Matplotlib 是 Python 的绘图库。

作为程序员,经常需要进⾏绘图,在我⾃⼰的⼯作中,如果需要绘图,⼀般都是将数据导⼊到excel中,然后通过excel⽣成图表,这样操作起来还是⽐较繁琐的,所以最近学习了⼀下Matplotlib模块,将该模块的常⽤的绘图⼿段和⼤家分享⼀下,提⾼⼤家在⼯作中的效率;在⽰例中,我们主要⽤到Matplotlib和Numpy这两个模块来为⼤家演⽰Python强⼤的绘图功能,相信⼤家通过我下⾯的10个⽰例,基本上可以满⾜⼤家⽇常⼯作的需求,再次强调⼀下,只是简单的⽤法,⼤家千万不要想通过这篇博客获取到太⾼深的⽤法。

下⾯进⼊正题1、绘制⼀条直线代码如下,下⾯的代码⼤家应该都可以看懂吧# 导⼊常⽤的包import numpy as npimport matplotlib.pyplot as plt# ⽣成-1到1的数据,⼀共⽣成100个,也可以⽣成1到-1的数据,这些数据是平均分布的# 定义x轴的数据x = np.linspace(-1,1,100)# 定义y轴的数据y = x * 2 + 100plt.plot(x,y)# 显⽰图像plt.show()效果如下2、创建⼀个画布,同时设置该画布的⼤⼩代码如下import numpy as npimport matplotlib.pyplot as pltx = np.linspace(-1,1,100)y1 = x * 2 + 100y2 = x ** 2# 创建⼀个画布# figsize:设置画布的⼤⼩plt.figure(figsize=(2,2))plt.plot(x,y1)# 创建第⼆个画布plt.figure()plt.plot(x,y2)plt.show()效果如下,会同时显⽰两张画布3、在⼀张画布中画两条线,同时可以设置线的颜⾊,宽度,和风格代码如下import numpy as npimport matplotlib.pyplot as pltx = np.linspace(-1,1,100)y1 = x * 2 + 0.5y2 = x ** 2# color:表⽰设置线的颜⾊# linewidth:表⽰设置线的宽度# linestyle:表⽰设置线的风格plt.figure(figsize=(2,2))plt.plot(x,y1,color='r',linewidth=1.0,linestyle='--')plt.plot(x,y2,color='b',linewidth=5.0,linestyle='-')plt.show()# 上⾯的效果就是2条曲线被放到⼀个画布中效果如下4、限制x轴,y轴的显⽰范围,为x轴和y轴添加描述,替换x轴和y轴的显⽰信息代码如下import numpy as npimport matplotlib.pyplot as plt# 设置坐标轴x = np.linspace(-3,3,100)y1 = x * 2 + 0.5y2 = x ** 2plt.figure(figsize=(6,6))plt.plot(x,y1,color='r',linewidth=1.0,linestyle='--')plt.plot(x,y2,color='b',linewidth=5.0,linestyle='-')# 限制x轴的显⽰范围plt.xlim((-1,2))# 限制y轴的显⽰范围plt.ylim((-1,5))# 给x轴加描述plt.xlabel("xxxxxx")# 给y轴加描述plt.ylabel("yyyyyy")# 替换⼀下横坐标的显⽰temp = np.linspace(-2,2,11)plt.xticks(temp)# 替换纵坐标的标签,⽤level0代替之前的-1plt.yticks([-1,0,1,2,3,4,5],["level0","level1","level2","level3","level4","level5","level6"]) plt.show()效果如下5、对边框进⾏设置,调整x轴和y轴的位置代码如下import numpy as npimport matplotlib.pyplot as plt# 设置坐标轴x = np.linspace(-3,3,100)y1 = x * 2 + 0.5y2 = x ** 2plt.figure(figsize=(6,6))plt.plot(x,y1,color='r',linewidth=1.0,linestyle='--')plt.plot(x,y2,color='b',linewidth=5.0,linestyle='-')# 限制x轴的显⽰范围plt.xlim((-1,2))# 限制y轴的显⽰范围plt.ylim((-1,5))# 给x轴加描述plt.xlabel("xxxxxx")# 给y轴加描述plt.ylabel("yyyyyy")# 替换⼀下横坐标的显⽰temp = np.linspace(-2,2,11)plt.xticks(temp)# 替换纵坐标的标签,⽤level0代替之前的-1# plt.yticks([-1,0,1,2,3,4,5],["level0","level1","level2","level3","level4","level5","level6"]) # 获取边框ax = plt.gca()# 设置右边框的颜⾊为红⾊ax.spines["right"].set_color("r")# 去掉上边框ax.spines["top"].set_color(None)# 把x轴的刻度设置为bottomax.xaxis.set_ticks_position("bottom")# 把y轴的客户设置为leftax.yaxis.set_ticks_position("left")# 设置x和y交汇的点,x轴是0,y是也是0,也就是x轴和y轴的都是0点交汇ax.spines["bottom"].set_position(("data",0))ax.spines["left"].set_position(("data",0))plt.show()效果如下6、为画布添加图例代码如下#Auther Bob#--*--conding:utf-8 --*--import numpy as npimport matplotlib.pyplot as plt# 设置图例x = np.linspace(-3, 3, 100)y1 = x * 2 + 0.5y2 = x ** 2plt.figure(figsize=(6, 6))# ⾸先要为两条线分别取名,这⾥的逗号必须要有l1, = plt.plot(x, y1, color='r', linewidth=1.0, linestyle='--')l2, = plt.plot(x, y2, color='b', linewidth=5.0, linestyle='-')# handles控制图例中要说明的线# labels为两条线分别取⼀个label# loc控制图例的显⽰位置,⼀般⽤best,由代码为我们选择最优的位置即可plt.legend(handles=[l1, l2], labels=["test1", "test2"], loc='best')# 限制x轴的显⽰范围plt.xlim((-1, 2))# 限制y轴的显⽰范围plt.ylim((-1, 5))# 给x轴加描述plt.xlabel("xxxxxx")# 给y轴加描述plt.ylabel("yyyyyy")# 替换⼀下横坐标的显⽰temp = np.linspace(-2, 2, 11)plt.xticks(temp)# 替换纵坐标的标签,⽤level0代替之前的-1plt.yticks([-1, 0, 1, 2, 3, 4, 5], ["level0", "level1", "level2", "level3", "level4", "level5", "level6"]) # 为图像加⼀个图例,⽤来对图像做说明plt.show()效果如下7、为图像添加描述代码如下import numpy as npimport matplotlib.pyplot as plt# 为图像做标注x = np.linspace(-3,3,100)y1 = x * 2# y2 = x ** 2plt.figure(figsize=(6,6))plt.plot(x,y1,color='r',linewidth=1.0,linestyle='-')# 给x轴加描述plt.xlabel("xxxxxx")# 给y轴加描述plt.ylabel("yyyyyy")# ======================================================# 在x轴为x0,y轴为x0 * 2上画⼀个点,这个点的颜⾊是红⾊,⼤⼩为50,这个⼤⼩就是这个点显⽰的⼤⼩x0 = 0.5y0 = x0 * 2# scatter是画点的⽅法plt.scatter(x0,y0,color='g',s=50)# 画线# 这条线是第⼀个点的坐标为[x0,y0],第⼆个点的坐标为[x0,-6],后⾯就是设置线的风格,线的颜⾊,线的宽度plt.plot([x0,x0],[y0,-6],color='k',linestyle='--',linewidth=1.0)# 画箭头和描述# xy代表我们的点# xytext代码我们描述的位置,基于当前的点,在x轴+30,在y轴-30# r'$2*x={n}$是我们要显⽰的⽂字信息,格式必须要这样# textcoords表⽰作为起点# fontsize表⽰设置字体⼤⼩# arrowprops设置箭头# arrowstyle设置箭头的样式# connectionstyle设置风格.2表⽰弧度plt.annotate(r'$2*0.5={n}$'.format(n = y0),xy=(x0,y0),xytext=(+30,-30),textcoords='offset points',fontsize=10,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2')) # 显⽰⽂字描述,从x轴为-1,y轴为2开始显⽰,$$中就是要显⽰的字符,这⾥如果要显⽰空格,则需要转义# fontdict设置字体plt.text(-1,2,r'$1\ 2\ 3\ 4$',fontdict={"size":16,"color":"r"})# =========================================================# 为图像加⼀个图例,⽤来对图像做说明plt.show()效果如下8、绘制散点图代码如下import numpy as npimport matplotlib.pyplot as plt# 绘制散点图# plt.scatter(np.arange(1,10,1),np.arange(10,19,1))# plt.scatter(np.linspace(-3,3,10),np.linspace(-3,3,10)) x = np.random.normal(1,10,500)y = np.random.normal(1,10,500)print(x)# s设置点的⼤⼩# c是颜⾊# alpha是透明度plt.scatter(x,y,s=50,c='b',alpha=0.5)plt.show()效果如下9、绘制直⽅图代码如下import numpy as npimport matplotlib.pyplot as plt# 绘制直⽅图x = np.arange(10)y = x ** 2 + 10# facecolor设置柱体的颜⾊# edgecolor设置边框的颜⾊plt.bar(x,y,facecolor='g',edgecolor='r')# 绘制翻转过来的直⽅图# plt.bar(x,-y)#显⽰⽂字for x,y in zip(x,y):plt.text(x,y,"{f}".format(f=y),ha="center",va='bottom') plt.show()效果如下10、⼀张画布显⽰多张图像代码如下#Auther Bob#--*--conding:utf-8 --*--import numpy as npimport matplotlib.pyplot as plt# plt.figure()# 有⼀个两⾏两列的单元格,这个位于第⼀个单元格# plt.subplot(2,2,1)# 画⼀条【0,0】-----》【1,1】的直线# plt.plot([0,1],[0,1])# 有⼀个两⾏两列的单元格,这个位于第⼀个单元格# plt.subplot(2,2,2)# 画⼀条【0,0】-----》【1,1】的直线# plt.plot([0,1],[0,1])# 有⼀个两⾏两列的单元格,这个位于第⼀个单元格# plt.subplot(2,2,3)# 画⼀条【0,0】-----》【1,1】的直线# plt.plot([1,0],[0,1])# plt.show()# 上⾯的例⼦,每张图他显⽰的⼤⼩是⼀样的,我们想显⽰不同的⼤⼩该怎么办?plt.figure()# 有⼀个两⾏三列的单元格,这个位于第⼀个单元格plt.subplot(2,1,1)# 画⼀条【0,0】-----》【1,1】的直线plt.plot([0,1],[0,1])# 有⼀个两⾏三列的单元格,这个位于第四个单元格,因为第⼀个单元格占了3个位⼦,所以这⾥就是第四个plt.subplot(2,3,4)# 画⼀条【0,0】-----》【1,1】的直线plt.plot([0,1],[0,1])# 有⼀个两⾏三列的单元格,这个位于第五个单元格plt.subplot(2,3,5)# 画⼀条【0,0】-----》【1,1】的直线plt.plot([1,0],[0,1])plt.show()效果如下11、matplotlib模块中的颜⾊和线条风格,取⾃菜鸟教程作为线性图的替代,可以通过向 plot() 函数添加格式字符串来显⽰离散值。

Python利用matplotlib绘制折线图的新手教程

Python利用matplotlib绘制折线图的新手教程

Python利⽤matplotlib绘制折线图的新⼿教程前⾔matplotlib是Python中的⼀个第三⽅库。

主要⽤于开发2D图表,以渐进式、交互式的⽅式实现数据可视化,可以更直观的呈现数据,使数据更具说服⼒。

⼀、安装matplotlibpip install matplotlib -i https:///simple⼆、matplotlib图像简介matplotlib的图像分为三层,容器层、辅助显⽰层和图像层。

1. 容器层主要由Canvas、Figure、Axes组成。

Canvas位于图像的最底层,充当画布的作⽤。

Figure位于Canvas之上,指画布上的⼀整张图像。

Axes位于Figure之上,指Figure中的单个图表,⼀个Figure中可以有⼀个或多个Axes,即⼀张图像中可以有⼀个或多个图表。

2. 辅助显⽰层是单个图表(Axes)中⽤来提供辅助信息的层。

辅助显⽰层主要包括Axes外观(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标轴刻度标签(tick label)、⽹格线(grid)、图例(legend)、标题(title)等内容。

辅助层可使图像显⽰更加直观,提⾼可读性。

3. 图像层指Axes内通过plot、scatter、bar、histogram、pie等函数绘制出的图形。

三、matplotlib绘制折线图# coding=utf-8import matplotlib.pyplot as pltplt.figure(figsize=(20, 10), dpi=100)game = ['1-G1', '1-G2', '1-G3', '1-G4', '1-G5', '2-G1', '2-G2', '2-G3', '2-G4', '2-G5', '3-G1', '3-G2', '3-G3','3-G4', '3-G5', '总决赛-G1', '总决赛-G2', '总决赛-G3', '总决赛-G4', '总决赛-G5', '总决赛-G6']scores = [23, 10, 38, 30, 36, 20, 28, 36, 16, 29, 15, 26, 30, 26, 38, 34, 33, 25, 28, 40, 28]plt.plot(game, scores)plt.show()运⾏结果:figure(): 创建图像并设置图像的⼤⼩等属性,返回⼀张图像,可以传⼊很多参数,常⽤参数有两个。

Python中matplotlib模块bar用法,实现绘画柱线图

Python中matplotlib模块bar用法,实现绘画柱线图

Python中matplotlib模块bar⽤法,实现绘画柱线图每天记录⼀下编程中遇到的问题1)简单柱形图先插⼊代码,如下。

import matplotlib.pyplot as pltimport numpy as npx_labels = ['2021-2-12', '2021-2-13', '2021-2-14', '2021-2-15', '2021-2-16', '2021-2-17', '2021-2-18', '2021-2-19']guangfu = [1, 7, 4, 2, 20, 5, 8, 10]jungong = [2, 19, 5, 10, 8, 4, 30, 14]zhengquan = [0.5, 16, 9, 10, 2, 18, 30, 11]# 这两⾏代码解决 plt 中⽂显⽰的问题plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = False# X轴位置x = np.arange(len(x_labels))# 柱图⼤⼩width = 0.2# 创建图形fig, ax = plt.subplots()ax.bar(x + width, guangfu, width, label='光伏概念')ax.bar(x + width*2, jungong, width, label='军⼯概念')ax.bar(x + width*3, zhengquan, width, label='证券概念')# Y轴标题ax.set_ylabel('每⽇资⾦⼊量/亿')ax.set_title('概念股资⾦动账')# X轴坐标显⽰,x + width*2 标识X轴刻度所在位置ax.set_xticks(x + width*2)ax.set_xticklabels(x_labels)# 显⽰右上⾓图例ax.legend()# ⾃动调整⼦图参数以提供指定的填充。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

python matplotlib画图
Matplotlib.pyplot是用来画图的方法,类似于matlab中plot命令,用法基本相同。

一.最基本的:
例如:
In [1]: import matplotlib.pyplot as plt
In [2]: plt.plot([1,2,3])
Out[2]: [<matplotlib.lines.Line2D object at 0x06518A10>] In [3]: plt.ylabel('some numbers')
Out[3]: <matplotlib.text.Text object at 0x0652D550>
In [4]: plt.show()
结果如图1
从图中可以看到,如果我们给plot()参数是一个list或者array,那么画图默认是作为Y轴来显示,x轴是自动生成的数值范围。

其实plot可以带一些参数,和matlab类似。

如:
plt.plot([1,2,3],[1,4,9])
则会按(1,1),(2,4),(3,9)来划线。

当然和matlab类似,我们也可以指定线的类型和颜色,如果默认,则为’b-‘,即蓝色的实线(如上图)。

>>> import matplotlib.pyplot as plt
>>>plt.plot([1,2,3,4], [1,4,9,16], 'ro')
[<matplotlib.lines.Line2D object at 0x00D62150>]
>>>plt.axis([0, 6, 0, 20])
[0, 6, 0, 20]
>>>plt.show()
结果如图2:
'ro'代表线形为红色圈。

plt.axis([0, 6, 0, 20])是指定xy坐标的起始范围,它的参数是列表[xmin, xmax, ymin, ymax]。

二,统一图上画多条曲线
下面看看如何在同一张图画多条曲线,我们用numpy生成的array
>>> import numpy as np
>>> t = np.arange(0.,5.,0.2)
>>>t
array([ 0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. ,
2.2, 2.4, 2.6, 2.8,
3. , 3.2, 3.4, 3.6, 3.8,
4. , 4.2, 4.4, 4.6, 4.8])
>>>plt.plot(t,t,'r--',t,t**2,'bs',t,t**3,'g^')
>>>plt.show()
结果如图3:
对于线的属性,我们也可以如下设定:
lines = plt.plot(x1, y1, x2, y2)
# use keyword args
plt.setp(lines, color='r', linewidth=2.0)
# ormatlab style string value pairs
plt.setp(lines, 'color', 'r', 'linewidth', 2.0)
三,subplot命令
Matplotlib也有和matlab中一样的subplot命令
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>>def f(t):
returnnp.exp(-t)*np.cos(2*np.pi*t)
>>> t1 = np.arange(0.0,5.0,0.1)
>>> t2 = np.arange(0.0,5.0,0.02)
>>>plt.figure(1)
<matplotlib.figure.Figure object at 0x0433FF50> >>>plt.subplot(211)
<matplotlib.axes.AxesSubplot object at 0x02700830> >>>plt.plot(t1,f(t1),'bo',t2,f(t2),'k')
[<matplotlib.lines.Line2D object at 0x04463310>,
<matplotlib.lines.Line2D object at 0x0447E570>] >>>plt.subplot(212)
<matplotlib.axes.AxesSubplot object at 0x0447E450> >>>plt.plot(t2,np.cos(2*np.pi*t2),'r--')
[<matplotlib.lines.Line2D object at 0x04530510>]
>>>plt.show()
结果如图4:
当然,也可以用figure来画多个图。

importmatplotlib.pyplot as plt
plt.figure(1) # the first figure
plt.subplot(211) # the first subplot in the first figure plt.plot([1,2,3])
plt.subplot(212) # the second subplot in the first figure plt.plot([4,5,6])
plt.figure(2) # a second figure
plt.plot([4,5,6]) # creates a subplot(111) by default plt.figure(1) # figure 1 current; subplot(212) still current plt.subplot(211) # make subplot(211) in figure1 current plt.title('Easy as 1,2,3') # subplot 211 title
四,在图片上标上text。

如:
importnumpy as np
importmatplotlib.pyplot as plt
mu,sigma = 100,15
x = mu + sigma*np.random.randn(10000)
# the histogram of the data
n,bins,patches =
plt.hist(x,50,normed=1,facecolor='g',alpha=0.75)
plt.xlabel('Smarts')
plt.ylabel('Probability')
plt.title('Histogram of IQ')
plt.text(60,.025,r'$\mu=100,\ \sigma=15$') plt.axis([40,160,0,0.03])
plt.grid(True)
plt.show()
结果如图5:
可以看到matplotlib接受Tex的数学公式模式‘$$‘. 如此借助latex,可以在图形中显示复杂的数学公式了。

相关文档
最新文档