Python数据分析与应用--Matplotlib数据可视化基础之学习笔记

2021-07-08
0

#Matplotlib绘图基础
#1.创建画布与子图
#2.添加画布内容
#3.保存与显示图形

import numpy as np
import matplotlib.pyplot as plt

#pyplot基础绘图语法
data = np.arange(0,1.1,0.01)
plt.title(‘lines’) ## 添加标题
plt.xlabel(‘x’)## 添加x轴的名称
plt.ylabel(‘y’)## 添加y轴的名称
plt.xlim((0,1))## 确定x轴范围
plt.ylim((0,1))## 确定y轴范围
plt.xticks([0,0.2,0.4,0.6,0.8,1])## 规定x轴刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])## 确定y轴刻度
plt.plot(data,data2)## 添加y=x^2曲线
plt.plot(data,data
4)## 添加y=x^4曲线
plt.legend([‘y=x2’,'y=x4’])
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\pyplot的基础绘图语法.png’)
plt.show()

包含子图绘制的基础语法

rad = np.arange(0,np.pi*2,0.01)
##第一幅子图
p1 = plt.figure(figsize=(8,6),dpi=80)## 确定画布大小
ax1 = p1.add_subplot(2,1,1)## 创建一个两行1列的子图,并开始绘制第一幅
plt.title(‘lines’)## 添加标题
plt.xlabel(‘x’)## 添加x轴的名称
plt.ylabel(‘y’)## 添加y轴的名称
plt.xlim((0,1))## 确定x轴范围
plt.ylim((0,1))## 确定y轴范围
plt.xticks([0,0.2,0.4,0.6,0.8,1])## 规定x轴刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])## 确定y轴刻度
plt.plot(rad,rad2)## 添加y=x^2曲线
plt.plot(rad,rad
4)## 添加y=x^4曲线
plt.legend([‘y=x2’,'y=x4’])

##第二幅子图
ax2 = p1.add_subplot(2,1,2)## 创开始绘制第2幅
plt.title(‘sin/cos’) ## 添加标题
plt.xlabel(‘rad’)## 添加x轴的名称
plt.ylabel(‘value’)## 添加y轴的名称
plt.xlim((0,np.pi2))## 确定x轴范围
plt.ylim((-1,1))## 确定y轴范围
plt.xticks([0,np.pi/2,np.pi,np.pi
1.5,np.pi*2])## 规定x轴刻度
plt.yticks([-1,-0.5,0,0.5,1])## 确定y轴刻度
plt.plot(rad,np.sin(rad))## 添加sin曲线
plt.plot(rad,np.cos(rad))## 添加cos曲线
plt.legend([‘sin’,‘cos’])
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\包含子图绘制的基础语法.png’)
plt.show()

#调整线条的rc参数
x = np.linspace(0, 4*np.pi)## 生成x轴数据
y = np.sin(x)## 生成y轴数据
plt.plot(x,y,label=" s i n ( x ) sin(x) sin(x)")## 绘制sin曲线图
plt.title(‘sin’)
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\默认sin曲线.png’)
plt.show()

修改rc参数后的图

plt.rcParams[‘lines.linestyle’] = ‘-.’ #线条样式 “- – -. :四种,默认"-"
plt.rcParams[‘lines.linewidth’] = 3 #线条宽度取0~10,默认1.5
plt.plot(x,y,label=" s i n ( x ) sin(x) sin(x)")## 绘制三角函数
plt.title(‘sin’)
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\修改rc参数后sin曲线.png’)
plt.show()

#调节字体的rc参数
plt.plot(x,y,label=" s i n ( x ) sin(x) sin(x)")## 绘制三角函数
plt.title(‘sin曲线’)
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\无法显示中文标题sin曲线.png’)
plt.show()

##设置rc参数显示中文标题

设置字体为SimHei显示中文–pyplot字体不支持中文字符的显示

plt.rcParams[‘font.sans-serif’] = ‘SimHei’
plt.rcParams[‘axes.unicode_minus’] = False ## 设置正常显示符号
plt.plot(x,y,label=" s i n ( x ) sin(x) sin(x)")## 绘制三角函数
plt.title(‘sin曲线’)
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\显示中文标题sin曲线.png’)
plt.show()

分析特征间的关系,以散点图,折线图为研究对象

#散点图主要用于分析特征间的相关关系
#折线图用于分析自变量与因变量之间的趋势关系
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams[‘font.sans-serif’] = ‘SimHei’ ## 设置中文显示
plt.rcParams[‘axes.unicode_minus’] = False ##设置正常显示符号
data = np.load(‘D:\pycharm file\数据分析与科学可视化\国民经济核算季度数据.npz’,allow_pickle=True)
name = data[‘columns’] ## 提取其中的columns数组,视为数据的标签
values = data[‘values’]## 提取其中的values数组,数据的存在位置

plt.figure(figsize=(8,7))## 设置画布
plt.scatter(values[:,0],values[:,2], marker=‘o’)## 绘制散点图—scatter函数,marker接收特定的string,表示绘制的点的类型
plt.xlabel(‘年份’)## 添加横轴标签
plt.ylabel(‘生产总值(亿元)’)## 添加y轴名称
plt.xticks(range(0,70,4),values[range(0, 70 , 4), 1],rotation=45)

#在matplotlib中ticks表示的是刻度,而刻度有两层意思,一个是刻标(locs),一个是刻度标签(tick labels)。在作图时,x轴y轴都是连续的,
#所以刻标可以随意指定,就是在连续变量上找寻位置,而刻度标签则可以对应替换
‘’’
xticks()返回了两个对象,一个是刻标(locs),另一个是刻度标签
locs, labels = xticks()

显示x轴的刻标

xticks( arange(6) )

显示x轴的刻标以及对应的标签

xticks( arange(5), (‘Tom’, ‘Dick’, ‘Harry’, ‘Sally’, ‘Sue’) )
‘’’
Rotation用来指定字符串的旋转角度

plt.title(‘2000-2017年季度生产总值散点图’)## 添加图表标题
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\2000-2017年各季度国民生产总值散点图.png’)
plt.show()
在这里插入图片描述

#绘制2000-2017年各产业各季度国民生产总值的散点图
plt.figure(figsize=(8,7))## 设置画布

绘制散点1

plt.scatter(values[:,0],values[:,3], marker=‘o’,c=‘red’)

绘制散点2

plt.scatter(values[:,0],values[:,4], marker=‘D’,c=‘blue’)

绘制散点3

plt.scatter(values[:,0],values[:,5], marker=‘v’,c=‘yellow’)
plt.xlabel(‘年份’)## 添加横轴标签
plt.ylabel(‘生产总值(亿元)’)## 添加纵轴标签
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title(‘2000-2017年各产业季度生产总值散点图’)## 添加图表标题
plt.legend([‘第一产业’,‘第二产业’,‘第三产业’])## 添加图例
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\2000-2017年各产业季度国民生产总值散点图.png’)
plt.show()

折线图的主要功能是查看因变量y随着自变量x改变的趋势,最适合用于显示随时间(根据常用比例设置)变化的连续数据,同时还可以看出数量的差异,增长趋势的变化

plt.figure(figsize=(8,7))## 设置画布

绘制折线图

plt.plot(values[:,0],values[:,2],color = ‘r’,linestyle = ‘–’)
plt.xlabel(‘年份’)## 添加横轴标签
plt.ylabel(‘生产总值(亿元)’)## 添加y轴名称
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title(‘2000-2017年季度生产总值折线图’)## 添加图表标题
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\2000-2017年各季度生产总值折线图.png’)
plt.show()

plt.figure(figsize=(8,7))## 设置画布
plt.plot(values[:,0],values[:,2],color = ‘r’,linestyle = ‘–’, #linestyle指定线条类型,marker表示绘制的点的类型
marker = ‘o’)## 绘制折线图
plt.xlabel(‘年份’)## 添加横轴标签
plt.ylabel(‘生产总值(亿元)’)## 添加y轴名称
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title(‘2000-2017年季度生产总值点线图’)## 添加图表标题
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\2000-2017年季度生产总值点线图.png’)
plt.show()

#plot函数可以一次接收多组数据,添加多条折线图
plt.figure(figsize=(8,7))## 设置画布
plt.plot(values[:,0],values[:,3],‘bs-’,
values[:,0],values[:,4],‘ro-.’,
values[:,0],values[:,5],‘gH–’)## 绘制折线图
plt.xlabel(‘年份’)## 添加横轴标签
plt.ylabel(‘生产总值(亿元)’)## 添加y轴名称
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title(‘2000-2017年各产业季度生产总值折线图’)## 添加图表标题
plt.legend([‘第一产业’,‘第二产业’,‘第三产业’])
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\2000-2017年各季度产业生产总值折线图.png’)
plt.show()
在这里插入图片描述

#########
#实践分析2000~2017各产业与行业的国民生产总值 #########
##########

#绘制2000~2017各产业与行业的国民生产总值散点图
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams[‘font.sans-serif’] = ‘SimHei’ ## 设置中文显示
plt.rcParams[‘axes.unicode_minus’] = False
data = np.load(‘D:\pycharm file\数据分析与科学可视化\国民经济核算季度数据.npz’,allow_pickle=True)
name = data[‘columns’]## 提取其中的columns数组,视为数据的标签
values = data[‘values’]## 提取其中的values数组,数据的存在位置
p = plt.figure(figsize=(12,12)) ##设置画布

子图1

ax1 = p.add_subplot(2,1,1)
plt.scatter(values[:,0],values[:,3], marker=‘o’,c=‘r’)## 绘制散点
plt.scatter(values[:,0],values[:,4], marker=‘D’,c=‘b’)## 绘制散点
plt.scatter(values[:,0],values[:,5], marker=‘v’,c=‘y’)## 绘制散点
plt.ylabel(‘生产总值(亿元)’)## 添加纵轴标签
plt.title(‘2000-2017年各产业季度生产总值散点图’)## 添加图表标题
plt.legend([‘第一产业’,‘第二产业’,‘第三产业’])## 添加图例

子图2

ax2 = p.add_subplot(2,1,2)
plt.scatter(values[:,0],values[:,6], marker=‘o’,c=‘r’)## 绘制散点
plt.scatter(values[:,0],values[:,7], marker=‘D’,c=‘b’)## 绘制散点
plt.scatter(values[:,0],values[:,8], marker=‘v’,c=‘y’)## 绘制散点
plt.scatter(values[:,0],values[:,9], marker=‘8’,c=‘g’)## 绘制散点
plt.scatter(values[:,0],values[:,10], marker=‘p’,c=‘c’)## 绘制散点
plt.scatter(values[:,0],values[:,11], marker=’+’,c=‘m’)## 绘制散点
plt.scatter(values[:,0],values[:,12], marker=‘s’,c=‘k’)## 绘制散点

绘制散点

plt.scatter(values[:,0],values[:,13], marker=’*’,c=‘purple’)

绘制散点

plt.scatter(values[:,0],values[:,14], marker=‘d’,c=‘brown’)
plt.legend([‘农业’,‘工业’,‘建筑’,‘批发’,‘交通’,
‘餐饮’,‘金融’,‘房地产’,‘其他’])
plt.xlabel(‘年份’)## 添加横轴标签
plt.ylabel(‘生产总值(亿元)’)## 添加纵轴标签
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\2000-2017年季度各行业生产总值散点子图.png’)
plt.show()
在这里插入图片描述

绘制2000~2017各产业与行业的国民生产总值折线图

p1 = plt.figure(figsize=(8,7))## 设置画布

子图1

ax3 = p1.add_subplot(2,1,1)
plt.plot(values[:,0],values[:,3],‘b-’,
values[:,0],values[:,4],‘r-.’,
values[:,0],values[:,5],‘g–’)## 绘制折线图
plt.ylabel(‘生产总值(亿元)’)## 添加纵轴标签
plt.title(‘2000-2017年各产业季度生产总值折线图’)## 添加图表标题
plt.legend([‘第一产业’,‘第二产业’,‘第三产业’])## 添加图例

子图2

ax4 = p1.add_subplot(2,1,2)
plt.plot(values[:,0],values[:,6], ‘r-’,## 绘制折线图
values[:,0],values[:,7], ‘b-.’,## 绘制折线图
values[:,0],values[:,8],‘y–’,## 绘制折线图
values[:,0],values[:,9], ‘g:’,## 绘制折线图
values[:,0],values[:,10], ‘c-’,## 绘制折线图
values[:,0],values[:,11], ‘m-.’,## 绘制折线图
values[:,0],values[:,12], ‘k–’,## 绘制折线图
values[:,0],values[:,13], ‘r:’,## 绘制折线图
values[:,0],values[:,14], ‘b-’)## 绘制折线图
plt.legend([‘农业’,‘工业’,‘建筑’,‘批发’,‘交通’,
‘餐饮’,‘金融’,‘房地产’,‘其他’])
plt.xlabel(‘年份’)## 添加横轴标签
plt.ylabel(‘生产总值(亿元)’)## 添加纵轴标签
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\2000-2017年季度各行业生产总值折线子图.png’)
plt.show()
在这里插入图片描述

###matlab中的bar函数怎么用
matlab中函数bar绘制直方图中的应用函数bar(x)可以绘制直方图,这对统计或者数据采集非常直观实用。它共有四种形式:
bar,bar3,barh 和bar3h,其中bar 和bar3 分别用来绘制二维和三维竖直方图,barh 和b
ar3h 分别用来绘制二维和三维水平直方图,调用格式是:
bar(x,y) 其中x 必须单调递增或递减,y 为n m× 矩阵,可视化结果为m 组,每
组n 个垂直柱,也就是把y 的行画在一起,同一列的数据用相同的颜色表示;
bar(x,y,width) (或bar(y,width))指定每个直方条的宽度,如width>1,则直方条会重
叠,默认值为width=0.8;
bar(…,’grouped’) 使同一组直方条紧紧靠在一起;
bar(…,’stack’) 把同一组数据描述在一个直方条上。
例5.3.2

y=[5 3 2 9;4 7 2 7;1 5 7 3];
subplot(2,2,1),bar(y)
x=[5 9 11];
subplot(2,2,2),bar3(x,y)
subplot(2,2,3),bar(x,y,‘grouped’)
subplot(2,2,4),bar(rand(2,3),.75,‘stack’)

#分析特征内部数据分布与分散状况–直方图,饼状图,箱线图
#直方图–主要用于查看各分组数据的数量分布与其之间的数量比较
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams[‘font.sans-serif’] = ‘SimHei’## 设置中文显示
plt.rcParams[‘axes.unicode_minus’] = False
data=np.load(‘D:\pycharm file\数据分析与科学可视化\国民经济核算季度数据.npz’,allow_pickle=True)
name=data[‘columns’]
values=data[‘values’]
plt.figure(figsize=(6,5))
plt.bar(range(3),values[-1,3:6], width=0.5)
plt.xlabel(‘产业’)
plt.ylabel(‘生产总值(亿元)’)
label=(‘第一产业’, ‘第二产业’, ‘第三产业’)
plt.xticks(range(3), label)
plt.ylim((0,100000))
plt.title(‘2017年第一季度各产业国民生产总值直方图’)
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\2017年第一季度各产业国民生产总值直方图.png’)
plt.show()
在这里插入图片描述

#饼图–查看各分组数据在总数据的占比情况
plt.figure(figsize=(6,6))## 将画布设定为正方形,则绘制的饼图是正圆
label= [‘第一产业’,‘第二产业’,‘第三产业’]## 定义饼状图的标签,标签是列表
explode = [0.01,0.01,0.01]## 设定各项离心n个半径
plt.pie(values[-1,3:6],explode=explode,labels=label,
autopct=’%1.1f%%’)## 绘制饼图
plt.title(‘2017年第一季度各产业国民生产总值饼图’)
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\2017年第一季度各产业生产总值占比饼图’)
plt.show()
在这里插入图片描述

#箱线图–(最小值,下四分位数,中位数,上四分位数,最大值)可以粗略的看出数据是否具有对称性,分布的分散程度等信息
label= [‘第一产业’,‘第二产业’,‘第三产业’]## 定义标签
gdp = (list(values[:,3]),list(values[:,4]),list(values[:,5]))
plt.figure(figsize=(6,4))
plt.boxplot(gdp,notch=True,labels = label, meanline=True)
plt.title(‘2000-2017各产业国民生产总值箱线图’)
plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\2000-2017各产业国民生产总值箱线图.png’)
plt.show()
在这里插入图片描述

##########直方图,饼图,箱线图的任务实现##########
#绘制国民生产总值构成分布直方图
import numpy as np
import matplotlib.pyplot as plt
data = np.load(‘D:\pycharm file\数据分析与科学可视化\国民经济核算季度数据.npz’,allow_pickle=True)
name = data[‘columns’] ## 提取其中的columns数组,视为数据的标签
values = data[‘values’]## 提取其中的values数组,数据的存在位置
plt.rcParams[‘font.sans-serif’] = ‘SimHei’ ## 设置中文显示
plt.rcParams[‘axes.unicode_minus’] = False
label1 = [‘第一产业’,‘第二产业’,‘第三产业’]## 刻度标签1
label2 = [‘农业’,‘工业’,‘建筑’,‘批发’,‘交通’,
‘餐饮’,‘金融’,‘房地产’,‘其他’]## 刻度标签2
p = plt.figure(figsize=(12,12))

子图1

ax1 = p.add_subplot(2,2,1)
plt.bar(range(3),values[0,3:6],width = 0.5)## 绘制散点图
plt.xlabel(‘产业’)## 添加横轴标签
plt.ylabel(‘生产总值(亿元)’)## 添加y轴名称
plt.xticks(range(3),label1)
plt.title(‘2000年第一季度国民生产总值产业构成分布直方图’)

子图2

ax2 = p.add_subplot(2,2,2)
plt.bar(range(3),values[-1,3:6],width = 0.5)## 绘制散点图
plt.xlabel(‘产业’)## 添加横轴标签
plt.ylabel(‘生产总值(亿元)’)## 添加y轴名称
plt.xticks(range(3),label1)
plt.title(‘2017年第一季度国民生产总值产业构成分布直方图’)

子图3

ax3 = p.add_subplot(2,2,3)
plt.bar(range(9),values[0,6:],width = 0.5)## 绘制散点图
plt.xlabel(‘行业’)## 添加横轴标签
plt.ylabel(‘生产总值(亿元)’)## 添加y轴名称
plt.xticks(range(9),label2)
plt.title(‘2000年第一季度国民生产总值行业构成分布直方图’)## 添加图表标题

子图4

ax4 = p.add_subplot(2,2,4)
plt.bar(range(9),values[-1,6:],width = 0.5)## 绘制散点图
plt.xlabel(‘行业’)## 添加横轴标签
plt.ylabel(‘生产总值(亿元)’)## 添加y轴名称
plt.xticks(range(9),label2)
plt.title(‘2017年第一季度国民生产总值行业构成分布直方图’)## 添加图表标题

保存并显示图形

plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\国民生产总值构成分布直方图.png’)
plt.show()
在这里插入图片描述

#绘制国民生产总值构成分布饼图
label1 = [‘第一产业’,‘第二产业’,‘第三产业’]## 标签1
label2 = [‘农业’,‘工业’,‘建筑’,‘批发’,‘交通’,
‘餐饮’,‘金融’,‘房地产’,‘其他’]## 标签2
explode1 = [0.01,0.01,0.01]
explode2 = [0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01]
p = plt.figure(figsize=(12,12))

子图1

ax1 = p.add_subplot(2,2,1)
plt.pie(values[0,3:6],explode=explode1,labels=label1,
autopct=’%1.1f%%’)## 绘制散点图
plt.title(‘2000年第一季度国民生产总值产业构成分布饼图’)

子图2

ax2 = p.add_subplot(2,2,2)
plt.pie(values[-1,3:6],explode=explode1,labels=label1,
autopct=’%1.1f%%’)## 绘制散点图
plt.title(‘2017年第一季度国民生产总值产业构成分布饼图’)

子图3

ax3 = p.add_subplot(2,2,3)
plt.pie(values[0,6:],explode=explode2,labels=label2,
autopct=’%1.1f%%’)## 绘制散点图
plt.title(‘2000年第一季度国民生产总值行业构成分布饼图’)## 添加图表标题

子图4

ax4 = p.add_subplot(2,2,4)
plt.pie(values[-1,6:],explode=explode2,labels=label2,
autopct=’%1.1f%%’)## 绘制散点图
plt.title(‘2017年第一季度国民生产总值行业构成分布饼图’)## 添加图表标题

保存并显示图形

plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\国民生产总值构成分布饼图.png’)
plt.show()
在这里插入图片描述

绘制国民生产总值分散情况箱线图

label1 = [‘第一产业’,‘第二产业’,‘第三产业’]## 标签1
label2 = [‘农业’,‘工业’,‘建筑’,‘批发’,‘交通’,
‘餐饮’,‘金融’,‘房地产’,‘其他’]## 标签2
gdp1 = (list(values[:,3]),list(values[:,4]),list(values[:,5]))
gdp2 = ([list(values[:,i]) for i in range(6,15)])
p = plt.figure(figsize=(8,8))

子图1

ax1 = p.add_subplot(2,1,1)

绘制散点图

plt.boxplot(gdp1,notch=True,labels = label1, meanline=True)
plt.title(‘2000-2017各产业国民生产总值箱线图’)
plt.ylabel(‘生产总值(亿元)’)## 添加y轴名称

子图2

ax2 = p.add_subplot(2,1,2)

绘制散点图

plt.boxplot(gdp2,notch=True,labels = label2, meanline=True)
plt.title(‘2000-2017各行业国民生产总值箱线图’)
plt.xlabel(‘行业’)## 添加横轴标签
plt.ylabel(‘生产总值(亿元)’)## 添加y轴名称
在这里插入图片描述

保存并显示图形

plt.savefig(‘D:\pycharm file\数据分析与科学可视化\Matplotlib图片\国民生产总值分散情况箱线图.png’)
plt.show()
国民经济核算季度数据下载地址:
链接:https://pan.baidu.com/s/1LSXu5zi8GjkGzQ4KE4view
提取码:vwia

https://blog.csdn.net/qq_44692189/article/details/104280964

相关信息

评论