一、matplotlib,pyploy绘图相关的对象
1、容器类:图(figure)、坐标系(axes)、坐标轴(axis)、刻度(tick)
2、基础类:线(line)、点(narker)、文本(text)、图例(legend)、网格(grid)、标题(title)
二、绘图的类型
1、线形图:plot()
2、直方图:hist()
3、条形图:bar()
4、饼图:pie()
5、散点图:scatter()
6、3D图:from npl_toolkits.mplt3d import Aexs3D
7、动态交互图:pyecharts
检查配置环境
#导入库
import matplotlib.pyplot as plt #导入数据可视化库matplotlib里面的pyplot绘图模块,别名plt
import numpy as np #导入科学计算库,别名np
#1、线形图:plot()
plt.rcParams['font.family'] = 'YouYuan' #设置字体
plt.rcParams['font.size'] = 30 #设置字体大小
#plt.plot([1,5,6,9,10]) #如果给出一组一维数组,默认为y坐标,x坐标为0,1,2,3...
#plt.plot([1,2,3,4,5])
#plt.plot([4,5,6,7,9],[1,5,6,9,10]) #如果给出两组一维数组,前面一组为x坐标,后面一组y坐标
plt.plot([0,4,6,2,0],[0,0,6,6,0])
plt.axis([-4,18,-4,18])
plt.xlabel('课程')
plt.ylabel('成绩')
plt.savefig('../R&Q_pic/test_0.png',dpi = 600) #将生成的图片保存在指定的位置,分辨率为600
plt.show() #显示图表,必须在保存图片之后
#同一绘图区域绘制多图
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(10) #创建一个0-9的整数序列
plt.plot(x,x*1.5,'ro-',label = 'a')
plt.plot(x,x*2.5,'gx-',label = 'b')
plt.plot(x,x*3.5,'y*',label = 'c')
plt.plot(x,x*4.5,'bs-',label = 'd')
plt.plot(x,x**2,'mH-',label = 'e')
plt.savefig('../R&Q_pic/test1.jpg',dpi = 600)
plt.legend()
plt.show()
np.arange(10) #只能生成整数序列
np.arange(1,100,0.2) #可以生成小数序列,以0.2为等差
示例:绘制正弦曲线,余弦曲线
思路:首先需要一条一系列的X坐标,可通过numpy中的arange()函数生成,例如从0到4,步长为0.02;
然后借助numpy中的正弦、余弦函数对每个X坐标分别求值;最后通过X坐标和对应的Y坐标画图。
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.family'] = 'Kaiti'
x = np.arange(0,4,0.02) #生成x轴序列
y_1 = np.sin(np.pi*x)+2
y_2 = np.cos(np.pi*x)
plt.plot(x,y_2,'mx')
plt.plot(x,y_2,'r')
plt.legend(['正弦曲线','余弦曲线'])
plt.title('正余弦曲线图')
plt.show()
#综合示例
import matplotlib.pyplot as plt
plt.figure(num = '气温趋势',figsize = (6,4))
plt.rcParams['font.family'] = 'Kaiti'
x = ['周一','周二','周三','周四','周五','周六','周日']
y_1 = [20,15,18,16,21,14,10]
y_1 = [12,8,14,10,13,9,4]
plt.plot(x,y_1,'rs-',label = '最高气温')
plt.plot(x,y_2,'bo:',label = '最低气温')
plt.title('一周气温变化趋势')
plt.xlabel('星期')
plt.ylabel('气温')
plt.legend()
plt.savefig('../R&Q_pic/test4.jpg',dpi = 600)
plt.show()
#3.条形图:bar()
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'STSong'
years = ['2014','2015','2016','2017','2018','2019']
baokao_nums = [172,164.9,177,201,238,290]
luqu_nums = [54.87,57.06,28.98,72.22,76.25,79.3]
x = range(len(years))
plt.bar(x,height = baokao_nums,width = 0.4)
plt.bar([i + 0.4 for i in x],luqu_nums,width = 0.4)
plt.xticks([i + 0.2 for i in x],years)
plt.legend(['研究生报考人数','研究生录取人数'])
plt.ylabel('人数/万人')
plt.xlabel('年份')
plt.title('研究生历年报考和录取情况')
plt.savefig('../R&Q_pic/test6.jpg',dpi = 600)
plt.show()
#4、饼图:pie()
#案例:已知一个学生一天的活动时间分配为:学习8小时,睡觉7小时,吃饭三小时,玩乐6小时,绘制该学生一天时间分配饼状图
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'FangSong'
plt.rcParams['font.size'] = 18
labels = ['学习','睡觉','吃饭','玩乐'] #活动标签
hours = [8,7,3,6]
colors = ['c','r','m','y']
plt.pie(hours,labels = labels,colors = colors, shadow = True,explode = (0,0.1,0,0.1), \
autopct = '%3f%%',labeldistance = 1.2)
plt.title('一天的时间分配饼状图')
plt.savefig('../R&Q_pic/test7.jpg',dpi = 600)
plt.show()