Python库-Matplotlib,,Matplotlib


Matplotlib官网https://matplotlib.org,Matplotlib是一个Python的2D绘图库。

可视化是整个数据分析的关键辅助工具,可以清晰的理解数据。

折线图(用于显示数据(数值型)的变化趋势,反应事物的变化情况)

简单实现

import matplotlib.pyplot as plt #导入模块plt.plot([1,0,9],[4,5,6]) #.plot(x,y)绘制折线图的方法plt.show() #显示图形

技术图片

修改折线外观

from matplotlib import pyplot as pltx = range(1,8)y = [17,17,18,15,11,11,13]plt.plot(x,y,color = ‘red‘,alpha = 0.5,linestyle = ‘--‘,linewidth = 3,marker = ‘*‘) #.plot()方法绘制折线图 color修改颜色 alpha参数修改透明度(0,1) linewidth 改变线宽 linestyle 线的样式 marker改变折点样式plt.show()

技术图片

设置图片大小和保存图片(.figure()方法设置图片大小及分辨率,.savefig()方法保存图片)

from matplotlib import pyplot as pltimport randomx = range(2,26,2)y = [random.randint(15,30) for i in x]#.figure()方法设置图片大小和分辨率plt.figure(figsize = (20,8),dpi = 80)#figsize代表图片大小 单位英寸 dpi代表每一英寸上的像素点plt.plot(x,y)#绘制完成之后进行保存plt.savefig(‘保存的路径‘)plt.show() #show方法位于.savefig方法后

绘制x y轴刻度(通过.xticks(参数1,参数2)及.yticks(参数1,参数2)方法绘制xy轴刻度,参数1代表范围,参数2代表刻度格式)

from matplotlib import pyplot as pltimport randomx = range(2,26,1)y = [random.randint(15,30) for i in x]plt.figure(figsize = (20,8),dpi = 80)#设置x y 值刻度xticks_lable = ["{}:00".format(i) for i in range(24)]plt.xticks(x,xticks_lable,rotation = 45) #x代表有多少刻度值 xticks_lable代表每个刻度上的值 rotation倾斜度数yticks_lable = ["{}C".format(i) for i in range(min(y),max(y)+1)]plt.yticks(range(min(y),max(y)+1),yticks_lable)‘‘‘plt.xticks(x)plt.yticks(y)‘‘‘plt.plot(x,y)plt.show()

技术图片

一图多线及中文显示

x = range(0,120)y1 = [random.randint(10,30) for i in x]y2 = [random.randint(10,30) for i in x]plt.figure(figsize = (20,8),dpi = 80)plt.plot(x,y1,linewidth = 3,label = ‘自己‘)plt.plot(x,y2,linewidth = 3,linestyle = ‘--‘,label = ‘朋友‘)#解决中文显示from matplotlib import font_managermy_font = font_manager.FontProperties(fname = ‘/System/Library/Fonts/PingFang.ttc‘,size = 18)plt.xlabel(‘时间‘,fontproperties = my_font)#.xlabel()添加x轴说明plt.xlabel(‘次数‘,fontproperties = my_font)plt.title(‘每分钟变化数‘,fontproperties = my_font,color = ‘red‘) #图片名称plt.grid(alpha = 0.4) #添加网格plt.legend(prop = my_font,loc = ‘lower left‘) #添加图例plt.show()

技术图片

设置坐标轴范围

import matplotlib.pyplot as pltimport numpy as npx = np.arange(-10,11,1)y = x ** 2plt.plot(x,y)plt.xlim([-5,5])#调节x轴左右的显示范围#plt.xlim(xmin = -4)#调节x轴左边最小值#plt.xlim(xmax = 5)#调节x轴右边最大值#plt.ylim(ymin = 0)#调节y轴最小值plt.show()

技术图片

改变坐标轴的显示方式

import matplotlib.pyplot as pltimport numpy as npy = range(0,14,2)x = [-3,-2,-1,0,1,2,3]ax = plt.gca()#设置上下左右四个框线的颜色ax.spines[‘right‘].set_color(‘none‘)ax.spines[‘top‘].set_color(‘none‘)ax.spines[‘left‘].set_color(‘red‘)ax.spines[‘bottom‘].set_color(‘blue‘)#设置框线位置ax.spines[‘bottom‘].set_position((‘data‘,0))ax.spines[‘left‘].set_position((‘data‘,0))plt.plot(x,y)plt.show()

技术图片

散点图(显示分布规律,判读变量之间是否存在关联趋势)

from matplotlib import pyplot as pltfrom matplotlib import font_managery = [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)# 设置图形大小plt.figure(figsize=(20,8),dpi=80)# 使用scatter绘制散点图plt.scatter(x,y,label= ‘3月份‘)# 调整x轴的刻度my_font = font_manager.FontProperties(fname=‘/System/Library/Fonts/PingFang.ttc‘,size=10)
_xticks_labels = [‘3月{}日‘.format(i) for i in x]plt.xticks(x[::3],_xticks_labels[::3],fontproperties=my_font,rotation=45) #修改刻度plt.xlabel(‘日期‘,fontproperties=my_font)plt.ylabel(‘温度‘,fontproperties=my_font)# 图例plt.legend(prop=my_font)plt.show()

技术图片

条形图(绘制离散的数据,比较数据(类别数据)之间差别)

纵向条形图

from matplotlib import pyplot as pltfrom matplotlib import font_managera = [‘流浪地球‘,‘疯狂的外星人‘,‘飞驰人生‘,‘大黄蜂‘,‘熊出没·原始时代‘,‘新喜剧之王‘]b = [‘38.13‘,‘19.85‘,‘14.89‘,‘11.36‘,‘6.47‘,‘5.93‘]# b =[38.13,19.85,14.89,11.36,6.47,5.93]my_font = font_manager.FontProperties(fname=‘/System/Library/Fonts/PingFang.ttc‘,size=10) plt.figure(figsize=(20,8),dpi=80)# 绘制条形图.barrects = plt.bar(range(len(a)),[float(i) for i in b],width=0.3,color= ‘red‘) #返回包含每个条形的可跌代对象 width设置条形的宽度plt.xticks(range(len(a)),a,fontproperties=my_font) #设置x轴刻度格式plt.yticks(range(0,41,5),range(0,41,5)) # 在条形图上加标注(水平居中)for rect in rects:    height = rect.get_height() #获取条形的高度    plt.text(rect.get_x() + rect.get_width() / 2, height+0.3, str(height),ha="center")plt.show()

技术图片

并列及罗列条形图

import matplotlib.pyplot as pltimport numpy as np
index = np.arange(4)BJ = [50,55,53,60]Sh = [44,66,55,41]# 并列plt.bar(index,BJ,width=0.3)plt.bar(index+0.3,Sh,width=0.3,color=‘green‘)plt.xticks(index+0.3/2,index)# 罗列# plt.bar(index,Sh,bottom=BJ,width=0.3,color=‘green‘)plt.show()

技术图片

技术图片

直方图(与条形图相似,绘制连续性的数据展示和数据的分布情况)

# 绘制直方图# 设置组距distance = 2# 计算组数group_num = int((max(time) - min(time)) / distance)# 绘制直方图plt.hist(time, bins=group_num) #.hist方法绘制直方图,参数1为数据,参数2为组数

饼状图(不同分类的占比情况)

import matplotlib.pyplot as pltimport matplotlibfrom matplotlib import font_managermy_font = font_manager.FontProperties(fname=‘/System/Library/Fonts/PingFang.ttc‘,size=10)label_list = ["第一部分", "第二部分", "第三部分"] # 各部分标签size = [55, 35, 10] # 各部分大小color = ["red", "green", "blue"] # 各部分颜色explode = [0, 0.05, 0] # 各部分突出值"""绘制饼图explode:设置各部分突出label:设置各部分标签labeldistance:设置标签文本距圆心位置,1.1表示1.1倍半径autopct:设置圆里面文本shadow:设置是否有阴影startangle:起始角度,默认从0开始逆时针转pctdistance:设置圆内文本距圆心距离返回值l_text:圆内部文本,matplotlib.text.Text objectp_text:圆外部文本"""

#.pie绘制饼状图,返回一个元组对象patches, l_text, p_text = plt.pie(size, explode=explode, colors=color, labels=label_list, labeldistance=1.1, autopct="%1.1f%%", shadow=False, startangle=90,pctdistance=0.6)for t in l_text: t.set_fontproperties(my_font)plt.legend(prop=my_font)plt.legend()plt.show()

2020-03-22 16:58

Python库-Matplotlib

评论关闭