一、建立画布和坐标系
# 建立画布 import numpy as np import matplotlib.pyplot as plt #解决中文乱码问题 plt.rcParams["font.sans-serif"]=['SimHei'] # 解决负号无法正常显示的问题 plt.rcParams['axes.unicode_minus']=False #在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示 # plt.savefig("test.svg", format="svg") # 建立画布:plt.figure里面又一个参数figsize=(8,6),它用width,height来控制整块画布的宽和高 fig = plt.figure(figsize=(8,6)) # 用add_subplot函数建立坐标系 # 利用add_subplot函数建立坐标系时需要先有画布, add_subplot函数最后一个数num must be 1 <= num <= 4, not 8 # 在fig上绘制1x1个坐标系 ax0 = fig.add_subplot(1,1,1) plt.show() # 绘制4个坐标系 ax1 = fig.add_subplot(2,2,1) ax2 = fig.add_subplot(2,2,2) ax3 = fig.add_subplot(2,2,3) ax4 = fig.add_subplot(2,2,4) plt.show()
二、设置坐标轴
import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib.font_manager import FontManager #解决中文乱码问题 plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] # 解决负号无法正常显示的问题 plt.rcParams['axes.unicode_minus']=False #在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示 plt.savefig("test.svg", format="svg") ''' 查看python自带字体 fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) print(mat_fonts) ''' # 数据源 df = pd.read_excel('/Users/caizhengjie/Desktop/数据分析数据/数据可视化/数据1.xlsx') print(df) # 设置坐标轴的标题 plt.subplots(1,1) #还可以设置xlabel,ylabel到x轴,y轴的距离,给参数labelpad传入具体值 plt.xlabel('月份',labelpad=10) plt.ylabel('注册量',labelpad=10) # 还可以对xlabel的文本相关性质进行设置 # plt.xlabel('月份',labelpad=10,fontsize='xx-large',color = "#70AD47",fontweight = 'hold') #设置坐标轴的刻度 # plt.xticks(ticks='',labels='') ticks表示刻度值,labels表示刻度处对应的标签 # plt.yticks(ticks='',labels='') plt.xticks(ticks=np.arange(9),labels=['1月份','2月份','3月份','4月份','5月份','6月份','7月份','8月份','9月份']) plt.yticks(ticks=np.arange(1000,7000,1000),labels=['1000人','2000人','3000人','4000人','5000人','6000人']) ''' plt库中tick_params函数对轴刻度线进行设置 tick_params函数中的参数 axis 对哪个轴的刻度线进行设置,x,y,both三个可选 reset 是否重置所有设置True/False which 对那种刻度线进行设置,major(主刻度线),minor(次刻度线),both三个可选 direction 刻度线的朝向,in(朝里),out(朝外),inout(里外均有)三个可选 length 刻度线长度 width 刻度线宽度 color 刻度线颜色 pad 刻度线与刻度标签之间的距离 labelsize 刻度标签大小 labelcolor 刻度标签颜色 top,botton,left,right True/False可选,控制上下左右刻度线是否显示 labeltop,Labelbottom,labelleft,labelright True/False可选,控制上下左右刻度线是否显示 ''' # # 设置坐标轴的范围 # plt.xlim(0,10) # plt.ylim(0,8000) # # # 坐标轴的显示设置,off为不显示坐标轴 # plt.axis('off') plt.plot(df['月份'],df['注册量']) plt.show()
三、其他表格格式的设置
import numpy as np import pandas as pd import matplotlib.pyplot as plt #解决中文乱码问题 plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] # 解决负号无法正常显示的问题 plt.rcParams['axes.unicode_minus']=False #在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示 # plt.savefig("test.svg", format="svg") # 数据源 df = pd.read_excel('/Users/caizhengjie/Desktop/数据分析数据/数据可视化/数据1.xlsx') print(df) plt.subplots(1,1) # 网格线设置,grid(b = 'True')来启用网格线 plt.grid(b = 'True') # 只打开x轴的网格线 plt.grid(b = 'True',axis='x') # 只打开y轴的网格线 plt.grid(b = 'True',axis='y') # 线型设置成虚线,线宽设置成1 plt.grid(b = 'True',linestyle = 'dashed',linewidth = 1) #设置坐标轴的刻度 # plt.xticks(ticks='',labels='') ticks表示刻度值,labels表示刻度处对应的标签 # plt.yticks(ticks='',labels='') plt.xticks(ticks=np.arange(9),labels=['1月份','2月份','3月份','4月份','5月份','6月份','7月份','8月份','9月份']) plt.yticks(ticks=np.arange(1000,7000,1000),labels=['1000人','2000人','3000人','4000人','5000人','6000人']) #设置图例 ''' plt.plot(x,y,label = '折线图') plt.bar(x,y,label = '柱形图') 通过plt.legend()方法显示出来 plt.legend(loc=) 还可以修改loc参数来显示图例位置 ''' # 图表标题设置 # 可以修改loc参数来显示标题位置,默认是居中,center居中,left靠左显示,right靠右显示 plt.title(label='1-9月xxx公司注册用户数') # 数据线 plt.plot(df['月份'],df['注册量']) #设置数据标签 # plt.text(x,y,str,ha,va,fontsize):(x,y)表示在哪里显示数据,str:显示的数据,ha:表示str在水平方向的位置,va表示str在垂直方向的位置,fontsize表示字体大小 plt.text(5,1605,1605) # 显示表上左右点的所有数据 for a,b in zip(df['月份'],df['注册量']): plt.text(a,b,b,ha = 'center',va = 'bottom',fontsize = 11) # 图表注释:与数据标签作用类似,都是便于读者快速读取信息 ''' plt.annotate(s,xy,xytext,arrowropes) s:表示要注释的文本内容 xy:表示要注释的位置 xytext:表示要注释文本显示的位置 arrowprops:设置箭相关参数,颜色,箭类型设置 ''' plt.annotate('服务器宕机了',xy = (5,1605),xytext=(6,1605),arrowprops = dict(facecolor = 'black',arrowstyle = '->')) ''' 数据表:就是在图表的基础上再添加一个表格 plt.table(cellText = None,cellColours=None,cellLoc='right',colWidths=None, rowLabels = None,rowColours=None,rowLoc='left',colLabels=None,colColours=None, colLoc = 'center',loc = 'bottom') cellText 数据表内的值 cellColours数据表的颜色 cellLoc 数据表中数据的位置,可选left,right,center colWidths 列宽 rowLabels 行标签 rowColours 行标签颜色 rowLoc 行标签的位置 colLabels 列标签 colColours 列标签颜色 colLoc 列标签的位置 loc整个数据表的位置,可选坐标系的上,下,左,右 ''' cellText = [[8566,5335,7310,6482], [4283,2667,3655,3241]] rows = ['任务量','完成量'] columns = ['东区','南区','西区','北区'] plt.table(cellText = cellText, cellLoc='center', rowLabels=rows, rowColours=['red','yellow'], rowLoc ='center', colLabels=columns, colColours=['red','yellow','red','yellow'], colLoc='left', loc='bottom' ) plt.savefig("test.svg", format="svg") plt.show()
四、用plt.subplot2grid函数建立坐标系
import numpy as np import matplotlib.pyplot as plt #解决中文乱码问题 plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] # 解决负号无法正常显示的问题 plt.rcParams['axes.unicode_minus']=False #在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示 # plt.savefig("test.svg", format="svg") # 用plt.subplot函数建立坐标系 # 用plt.subplot函数建立坐标系不需要先建立画布,只需要导入plt库就可以了 plt.subplot(2,2,1) #将图表的整个区域分成2行2列,且在第一个坐标系里面绘图 # 在第一个坐标系里面画折线 x = np.arange(6) y = np.arange(6) plt.plot(x,y) # 在第四个坐标系里面柱形 plt.subplot(2,2,4) plt.bar(x,y) plt.show()
五、用plt.subplots函数建立坐标系
import numpy as np import matplotlib.pyplot as plt #解决中文乱码问题 plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] # 解决负号无法正常显示的问题 plt.rcParams['axes.unicode_minus']=False #在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示 #plt.savefig("test.svg", format="svg") ''' plt.subplots函数也是plt库的一个函数,与plt.subplot2grid函数和plt.subplot函数不同之处是, lt.subplot2grid函数和plt.subplot函数每次只能返回一个坐标系,而plt.subplots函数可以一次可以返回多个坐标系 ''' fig,axes = plt.subplots(2,2) # 想在哪个坐标系中绘图可以通过axes[x,y]来指明 x = np.arange(6) y = np.arange(6) # 在[0,0]坐标系中绘制折线图 axes[0,0].plot(x,y) # 在[1,1]坐标系绘制柱状图 axes[1,1].bar(x,y) plt.show()
六、用plt.subplot函数建立坐标系
import numpy as np import matplotlib.pyplot as plt #解决中文乱码问题 plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] # 解决负号无法正常显示的问题 plt.rcParams['axes.unicode_minus']=False #在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示 # plt.savefig("test.svg", format="svg") # 用plt.subplot函数建立坐标系 # 用plt.subplot函数建立坐标系不需要先建立画布,只需要导入plt库就可以了 plt.subplot(2,2,1) #将图表的整个区域分成2行2列,且在第一个坐标系里面绘图 # 在第一个坐标系里面画折线 x = np.arange(6) y = np.arange(6) plt.plot(x,y) # 在第四个坐标系里面柱形 plt.subplot(2,2,4) plt.bar(x,y) plt.show()