matplotlib数据可视化

matplotlib

ipython的境况下,使用%matplotlib

只要不使用plot.show()和plot.savefig()方法就不会结束画布,一旦使用就视为结束当前绘画。
在这里插入图片描述

对画布的操作

创建一张画布figure()方法

plot.figure(
    ['num=None', 'figsize=None', 'dpi=None', 'facecolor=None', 'edgecolor=None', 'frameon=True', "FigureClass=<class 'matplotlib.figure.Figure'>", 'clear=False', '**kwargs'],
)
常用参数
  1. figsize:画布的大小,传入一个元组
  2. dpi:分辨率(像素点数),默认像素点数为100
  3. facecolor:背景颜色,默认为黑
  4. edgecolor:边框颜色,默认为黑
常用方法
方法名称作用
title传入字符串,添加表图的标题
legend添加图例,若添加图形的时候指定了的话,就无需传入参数,否则传入相应个数的参数,按照图形创建的顺序
xlabel添加x轴的名称,传入字符串
ylabel添加y轴的名称,传入字符串
xlim修改x轴范围,传入一个区间,例如[0,5]
ylim修改y轴范围,传入一个区间,例如[0,25]
xticks修改x轴的刻度
yticks修改y轴的刻度
  1. legend里的参数font-size:{‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’}
  2. xticks里的参数:第一位是间隔刻度,第二个是每点的名称,rotation是旋转的角度
label图例的中文显示
  1. 设置当前画布支持中文:使用font.sans-serif或font.family
  2. pyplot.rcParameters[‘font.sans-serif’] = ‘Simhei’:使用rc参数
  3. pyplot.rcParameters[‘font.family’] = ‘Simhei’:使用rc参数
  4. plot.plot(font-properties=‘Simhei’)
    在这里插入图片描述

对图形的操作

在这里插入图片描述
在这里插入图片描述

创建一个图形plot()方法

plot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)
# 多次调用plot方法,建立新的图形
# 可一次创建多个图形,两个数据为一组
plot.plot(data1,data2,data1,data3,data1,data4)
# 可以创建的时候指定图形的线条的类型,颜色,点的颜色,顺序不限定,还有图形的图例名称。多个图形的话,一样按此顺序
plot.plot(data1,data2,'r--o','bigdata')
常用参数
  1. 第一个参数,传入x轴的数据
  2. 第二个参数,传入y轴的数据
  3. label:传入图例名称,可不写
  4. color:指定图形的颜色,传入颜色名称,可传入缩写
  5. linestyle:图形线条的类型,传入指定缩写,默认为【’-’】
  6. marker:点的类型,每个点的类型,传入指定缩写
  7. font-properties:改为中文支持
常用方法
  1. show:显示画图结果,使用后就不可以在当前画布添加新的图形了
  2. savefig:保存图像,传入路径,jpg格式不支持,使用后就不可以在当前画布添加新的图形了

rc参数

pyplot.rcParameters[‘参数名称’] = value

  1. font.sans-serif
  2. font.family
  3. axes.unicode-minus ==>False 用来正常显示负号

子图

subplot

plt.subplot(nrows, ncols, plot_number)
plt.subplot(3,2,4)
plt.subplot(324)
# 效果一样,建立一个3x2的图形,共六份,现在画第4份,即(2,1)

subplots

同subplot不同的是,此方法一次创建完成

plt.figure(figsize=(8,7))
fig,ax = plt.subplots(2,2) # 会一次创建4个子图对象,系统默认大小640x480
fig # 画布
ax # 子图对象多维数组
ax[0][0].plot(d,np.sin(d))

subplot2grid

plt.subplot2grid(GridSpec, CurSpec, conspan=1,rowspan=1)
# 创建表格图形,GridSpec传入元组,表示图像的个数及分布,CurSpec传入元组,表示当前要画的区域,
# conspan:跨列合并,rowspan跨行合并

在这里插入图片描述

上课代码

数据资源链接
提取码:1ol9

ipython的代码

import numpy as np
from matplotlib import pyplot as plt

data = np.load('dataset/国民经济核算季度数据.npz')
list(data)
columns = data['columns']
values = data['values']
columns
values[:5,1]
values[:5,:5]
values[:5,:5]
values[range(0,69,4),:]

# =======

columns
values[:5,3:6]
# ==== 
import matplotlib.pyplot as plt
plt.figure(figsize=(8,7))
%matplotlib
plt.subplot(2,2,1)# 分成2行2列的区域,用第一个区域绘画
plt.plot(d,np.sin(d),color='r',linestyle='-')
plt.subplot(2,2,2)# 分成2行2列的区域,用第二个区域绘画
plt.plot(d,np.cos(d),color='b',linestyle='--')
plt.subplot(223)# 分成2行2列的区域,用第三个区域绘画
plt.plot(d,np.np.arcsin(d),color='green')
plt.subplot(224)# 分成2行2列的区域,用第四个区域绘画
plt.plot(d,np.np.arccos(d))

# =======

plt.figure(figsize=(8,7))
fig,ax = plt.subplots(2,2) # 会一次创建4个子图对象,系统默认大小640x480
fig
ax # 子图对象多维数组
ax[0][0].plot(d,np.sin(d))
# =======
for i in range(6,len(columns)):
	print(i, columns[i])
columns[6].find("增加值")
columns[6][:columns[6].find("增加值")]

python的代码

创建图形
import numpy as np
from matplotlib import pyplot as plt
# 数据准备
data = np.load('dataset/国民经济核算季度数据.npz')
columns = data['columns']
values = data['values']
values[:,0]

# 创建画布
plt.figure(figsize=(8,7))
plt.rcParams['font.sans-serif'] = 'Simhei'
# plt.rcParams['font.family'] = 'Simhei'
plt.rcParams['axes.unicode_minus'] = False

plt.plot(values[:,0],values[:,2],color='r',linestyle='-',marker='o')
plt.xlim([0,70])
plt.ylim([0,225000])
plt.xlabel('年份')
plt.ylabel('生产总值(亿元)')
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title('2000-2017年国民生产总值')
plt.show()
import numpy as np
from matplotlib import pyplot as plt
# 数据准备
data = np.load('dataset/国民经济核算季度数据.npz')
columns = data['columns']
values = data['values']
values[:,0]

# 创建画布
plt.figure(figsize=(8,7))
plt.rcParams['font.sans-serif'] = 'Simhei'
# plt.rcParams['font.family'] = 'Simhei'
plt.rcParams['axes.unicode_minus'] = False
plt.plot(values[:,0],values[:,3],color='r',linestyle='-',marker='o',label='第一产业')
plt.plot(values[:,0],values[:,4],color='g',linestyle='-.',marker='d',label='第二产业')
plt.plot(values[:,0],values[:,5],color='b',linestyle='--',marker='s',label='第三产业')
plt.legend()
# plt.plot(values[:,0],values[:,3],'r-o',values[:,0],values[:,4],'g-.d',values[:,0],values[:,5],'b--s')
# plt.legend(label=['第一产业','第二产业','第三产业'])
plt.xlabel('年份')
plt.ylabel('生产总值(亿元)')
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title('2000-2017年国民生产总值')
plt.show()
创建子图
import numpy as np
from matplotlib import pyplot as plt
# 数据准备
data = np.load('dataset/国民经济核算季度数据.npz')
columns = data['columns']
values = data['values']
values[:,0]

# 创建画布
plt.figure(figsize=(8,7))
plt.rcParams['font.sans-serif'] = 'Simhei'
# plt.rcParams['font.family'] = 'Simhei'
plt.rcParams['axes.unicode_minus'] = False
# 第一个表
plt.subplot(2,1,1)
plt.plot(values[:,0],values[:,3],'r-o',values[:,0],values[:,4],'g-.d',values[:,0],values[:,5],'b--s')
plt.legend(labels=['第一产业','第二产业','第三产业'])
plt.xlabel('年份')
plt.ylabel('生产总值(亿元)')
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title('2000-2017年国民生产总值')
# 第二个表
plt.subplot(2,1,2)
for i in range(6, len(columns)):
	plt.plot(values[:,0],values[:,i],'g-.d',label=columns[6][:columns[6].find("增加值")])
# plt.plot(values[:,0],values[:,6],'g-.d',label='渔业')
# plt.plot(values[:,0],values[:,7],'g-.d',label='工业')
# plt.plot(values[:,0],values[:,8],'g-.d',label='建筑业')
# plt.plot(values[:,0],values[:,9],'g-.d',label='批发和零售业')
plt.legend()
plt.xlabel('年份')
plt.ylabel('生产总值(亿元)')
# 第一个是间隔刻度,第二个是每点的名称,rotation是旋转的角度
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title('2000-2017年国民生产总值')
plt.show()

安装opencv_python,里面有cv2

散点图

scatter方法

绘制散点图的

  1. 参数x:x轴的数据
  2. 参数y:y轴的数据
  3. 参数s:点的半径大小
  4. 参数c:点的颜色
  5. 参数alpha:点的透明度

colorbar方法

生成一个渐变色的颜色棒

import numpy as np
import matplotlib.pyplot as plt

x=np.random.randn(100)
y=np.random.randn(100)
colors=np.random.rand(100)
size=1000*np.random.rand(100)
# 设置size的2大小可以变成冒泡图像
plt.scatter(x,y,c=colors,s=size,alpha=0.3,cmap="viridis")
plt.colorbar()
plt.show()
参数名称说明
x,y接受array,表示x轴和y轴对应的数据
s接收数值或一维的array。指定点的大小(半径)
c接收颜色或一维的array。指定点的颜色
marker接收特定的string,表示点的类型
alpha接收0-1的小数,表示透明度
cmap用于指定渐变色

直方图

bar方法

import numpy as np
import matplotlib.pyplot as plt

data=np.load("dataset/国民经济核算季度数据.npz")
columns=data['columns']
values=data['values']
labels=['第一产业','第二产业','第三产业']

plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(8,7))

plt.subplot(2,1,1)
plt.bar(range(3),values[-1,3:6],width=0.5,color=['r','g','b'])
plt.xticks(range(3),labels=labels)
plt.xlabel("产业")
plt.ylabel("生产总值(亿元)")
plt.title("2017年第一季度国民生产总值")
  1. width:图的宽度,默认为0.8

barh方法

plt.subplot(2,1,2)
plt.barh(range(3),values[-1,3:6],height=0.5)
plt.yticks(range(3),labels=labels)
plt.ylabel("产业")
plt.xlabel("生产总值(亿元)")
plt.title("2017年第一季度国民生产总值")
plt.show()
  1. 平行的直方图,不用width而用height
参数名称说明
left接收array,表示x轴数据。
height接收array,表示x轴所代表的数据的个数
width接收0-1的float,表示直方图的宽度,默认为0.8
color接受特定的string或array,表示直方图的颜色

饼状图

import numpy as np
import matplotlib.pyplot as plt

data=np.load("dataset/国民经济核算季度数据.npz")
columns=data['columns']
values=data['values']
labels=['第一产业','第二产业','第三产业']

plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(6,6))
plt.pie(values[-1,3:6],labels=labels,explode=[0.01,0.01,0.01],autopct='%1.1f%%',radius=0.8)
plt.show()

pie方法

参数名称说明
explode饼状图每一部分到原点的距离,接收array
autopct显示饼状图每一部分所占的数字比例,例如autopct=’%1.1f%%’43.1%
radius饼状图的半径,默认为1
labeldistance指定每一项的名称和距离饼图圆心多少个半径。默认为1.1。
pctdistance指定每一个比例到饼图圆心多少个半径。默认为0.6。
color接收array,指定每一项的颜色
labels接收array,指定每一项的名称
x接收array,接收要绘图的数据

箱线图

import numpy as np
import matplotlib.pyplot as plt

data=np.load("dataset/国民经济核算季度数据.npz")
columns=data['columns']
values=data['values']
labels=['第一产业','第二产业','第三产业']

plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(6,6))
plt.boxplot(values[:,4:7],notch=True,labels=labels,meanline=True)
plt.show()

boxplot方法

参数名称说明
x接收array,接收要绘制的数据
positions接收array,表示图形位置。
notch接受布尔值,表示中间箱体是否有缺口
widths接收array或scalar,表示每一个箱体的宽度
sym接受特定的string,指定异常点形状。
labels接收array,指定每一个箱线图的标签。
vert接受布尔值,表示图形是横向还是纵向
meanline接受布尔值,表示是否显示均值线
python023基于Python旅游景点推荐系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值