Matplotlib是一个Python 2D绘图库,可以生成各种硬拷贝格式和跨平台交互式环境的出版物质量数据。Matplotlib可用于Python脚本,Python和IPython shell,Jupyter笔记本,Web应用程序服务器和四个图形用户界面工具包。
话不多少,直接上干货,跟大家分享下我使用matplotlib绘制一些图形的方法:
#导入模块 import matplotlib.pyplot as plt import random import matplotlib import numpy as np # #传入x,y通过plot方法实现画图 # plt.plot([1,0,9],[4,5,6]) # #在执行程序的时候展示图形 # plt.show() #折线图的绘制 '''折线图的绘制''' # x = range(1,8) #x轴位置 # y = [17,17,18,11,15,11,113] #y轴位置 # plt.plot(x,y) # plt.show() '''折线的颜色和形状的设置''' # x = range(1,8) #x轴的位置 # y = [17,17,18,11,15,11,113] # y轴的位置 # # #基础属性设置,color为颜色,alpha为折现透明度(0-1),linestyle代表折线样式,linewidth为折线的宽度设置。 # plt.plot(x,y,color = 'red',alpha = 0.5,linestyle = ':',linewidth = 3) # plt.show() '''折点样式设置''' # x = range(1,8) #设置x轴位置 # y = [17,17,18,11,15,11,113] # plt.plot(x,y,marker = '|') #传入x,y值,marker代表折现点,在这里设置为折现点为‘o’ # plt.show()#展示图形 '''设置的图片的大小与保存''' # x = range(2,26,2)#设置x轴位置 # # y = [random.randint(15,30) for i in x] #设置y轴,这里用到了一个列表生成式的方法。 # # plt.figure(figsize=(20,8),dpi=80)#设置画布大小,figsize代表画布的宽和高,dpi代表分辨率,缺省值为80 # # plt.plot(x,y)#传入x,y # plt.show()#展示图形 # # plt.savefig('./t1.png') #保存绘制的图形,并命名为t1.png '''绘制x轴和y轴的刻度''' # x = range(2,26,2) #x轴位置 # y = [random.randint(15,30) for i in x ] #y轴位置 # plt.figure(figsize=(20,8),dpi = 80)#画布大小为20,8、分辨率为80 # # #设置x轴刻度 # #plt.xticks(x) # #plt.xticks(range(1,25)) # #plt.show() # # #设置y轴刻度(2种方法,直接传y值进去或者使用range生成 # plt.yticks(y) # #plt.yticks(range(min(y),max(y)+1)) # #plt.show() # # #构造x轴刻度标签 # x_ticks_label = ["{}:00".format(i) for i in x] # #rotation=45:设置字体倾斜45度 # plt.xticks(x,x_ticks_label,rotation = 45) # #构造y轴刻度标签 # y_ticks_label = ["{}℃".format(i) for i in range(min(y),max(y)+1)] # plt.yticks(range(min(y),max(y)+1,),y_ticks_label) # # plt.plot(x,y) # plt.show() '''设置中文显示''' #matplotlib只显示英文,无法显示中文,要使用中文的话需要修改matplotlib的默认字体 #此时修改matplotlib默认字体的话可以使用font_manager修改 # #以2个小时每分钟心脏跳动变化 # x = range(0,120) # y = [random.randint(10,30) for i in x ] # # plt.figure(figsize=(20,8),dpi = 80) # #plt.plot(x,y) # # #x座标轴信息 # # my_font= matplotlib.font_manager.FontProperties(fname=r'C:\Windows\Fonts\simsun.ttc',size = 18) # # #设置x轴标签,并将字体旋转45度 # plt.xlabel('时间',rotation = 45,fontproperties = my_font) # #设置y轴标签, # plt.ylabel('次数',fontproperties = my_font) # # #设置标题 # plt.title('每分钟跳动次数',fontproperties = my_font,color = 'red') # #绘制图形 # plt.plot(x,y) # plt.show() '''一线多图''' ''' 假设大家在30岁的时候,根据自己的实际情况, 统计出来你和你同事各自从11岁到30岁每年交的男/女朋友的数量如列表y1和y2, 请在一个图中绘制出该数据的折线图,从而分析每年交朋友的数量走势。''' # y1 = [1,0,1,1,2,4,3,4,4,5,6,5,4,3,3,1,1,1,1,1] # y2 = [1,0,3,1,2,2,3,4,3,2,1,2,1,1,1,1,1,1,1,1] # # x = range(11,31) # #设置图形 # plt.figure(figsize=(20,8),dpi=80) # # plt.plot(x,y1,color = 'red',label= '自己') # plt.plot(x,y2,color = 'blue',label = '同事') # # #设置x轴刻度标签 # # xticks_label = ['{}岁'.format(i) for i in x] # my_font = matplotlib.font_manager.FontProperties(fname=r'C:\Windows\Fonts\simsun.ttc',size = 18) # plt.xticks(x,xticks_label,fontproperties = my_font,rotation = 45) # # #绘制网格(网格也可以设置线的样式) # #alpha = 0.4 设置网格透明度 # plt.grid(alpha = 0.4) # # #添加图例注意:(只有在这里需要添加prop参数是显示中文,其他的都用fontproperties) # #设置图例位置loc : upper left、 lower left、 center left、 upper center # # plt.legend(prop = my_font,loc = 'upper right') # # #展示 # plt.show() '''绘制一图多个座标系子图''' # #add_subplot方法--给figure增加子图 # x = np.arange(1,100) # #新建figure对象 # fig = plt.figure(figsize=(20,10),dpi = 80) # #新建子图1 # ax1 = fig.add_subplot(2,2,1)#表示“2×2网格,第2子图” # ax1.plot(x,x) # # #新建子图2 # ax2 = fig.add_subplot(2,2,2) # ax2.plot(x,x**2) # # #新建子图3 # ax3 = fig.add_subplot(2,2,3) # ax3.plot(x,np.log(x)) # # plt.show() '''设置座标轴范围''' # x = np.arange(-10,11,1) # y = x**2 # plt.plot(x,y) # #可以调x轴的左右两边 # #plt.xlim([-5,5]) # # #调x轴一边的方向 # plt.xlim(xmin = -4) # plt.xlim(xmax = 4) # plt.ylim(ymin = 0) # plt.ylim(ymax = 100) # plt.show() '''改变座标轴的默认显示方式''' # y = range(0,14,2) # x = [-3,-2,-1,0,1,2,3] # # #获取当前图表的图像 # ax = plt.gca() # # #设置图形的包围线 # ax.spines['right'].set_color('none') # ax.spines['left'].set_color('red') # ax.spines['top'].set_color('none') # ax.spines['bottom'].set_color('blue') # # #设置底边的移动的范围,移动到y轴的0位置,'data':移动轴的位置到交叉轴的指定座标 # ax.spines['bottom'].set_position(('data',0)) # ax.spines['left'].set_position(('data',0)) # # plt.plot(x,y) # plt.show() '''绘制散点图''' '''题干 3月份每天最高气温 a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23] ''' x = range(1,32) y = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23] #设置图形大小 plt.figure(figsize=(20,8),dpi=80) plt.scatter(x,y,label = '三月份') #调整x轴的刻度 my_font = matplotlib.font_manager.FontProperties(fname=r'C:\Windows\Fonts\simsun.ttc',size = 18) xticks_label = ['3月{}号'.format(i) for i in x] plt.xticks(x[::3],xticks_label[::3],fontproperties = my_font,rotation = 45) plt.xlabel('日期',fontproperties = my_font) plt.ylabel('温度',fontproperties = my_font) #图例 plt.legend(prop = my_font,loc = 'upper right')
plt.show()
在这里我主要绘制的是折线图,对于饼图、直方图、条形图绘制方法大同小异。希望分享的代码能够帮助到一你们。嘎嘎!