机器学习——数据可视化库Matplotlib

Matplotlib是一个数据可视化的库,也就是一个可以画图的库。通过 Matplotlib,我们就可以仅使用几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。接下来我就把学习记录放上来。

创建一张空图
两句话就能搞定,当然,前提是要导入Matplotlib包:

import matplotlib.pyplot as plt
plt.plot()
plt.show()

运行结果:
在这里插入图片描述
上面的图中,y轴和x轴都有小的切段标记:
在这里插入图片描述
我们可以通过这句话plt.tick_params(left="off",bottom="off")把它们去掉,即:

plt.plot()
plt.tick_params(left="off",bottom="off")
plt.show()

运行结果:
在这里插入图片描述
可以看到,都没了…

现在我有一个数据文件(UNRATE.csv),它其中的数据如下所示:
在这里插入图片描述
它表示的是美国在每一年每一月的失业率。接下来就对该文件中的数据进行相关操作。

折线图绘制
这里只读取前12行数据绘制折线图

file_unrate=pd.read_csv('UNRATE.csv')  #读文件
#file_unrate=pd.to_datetime(file_unrate["DATE"])
head12=file_unrate[0:12]
print(head12)
plt.plot(head12["DATE"],head12["VALUE"]) #分别表示X轴和Y轴
plt.xticks(rotation=45)  #X轴数据旋转45度
plt.xlabel(xlabel="date")  #X轴标题
plt.ylabel(ylabel="jobless rate") #Y轴标题
plt.title("U.S. unemployment rate data")  #图片标题
plt.show()

结果:
在这里插入图片描述
折线图指定线的颜色和线宽

file_unrate=pd.read_csv('UNRATE.csv')  #读文件
#file_unrate=pd.to_datetime(file_unrate["DATE"])
head12=file_unrate[0:12]
Color=(123/255,10/255,210/255) #Matplotlib中定义颜色必须要除以255
print(head12)
plt.plot(head12["DATE"],head12["VALUE"],color=Color,linewidth=10) #分别表示X轴,Y轴,线的颜色,线的宽度
plt.xticks(rotation=45)  #X轴数据旋转45度
plt.xlabel(xlabel="date")  #X轴标题
plt.ylabel(ylabel="jobless rate")  #Y轴标题
plt.title("U.S. unemployment rate data")  #图片标题
plt.show()

在这里插入图片描述
添加文字
使用plt.text()就可以添加文字。

file=pd.read_csv('fandango_score_comparison.csv')  #读文件

head_x=file["RottenTomatoes_User"][0:12]
head_y=file["Metacritic"][0:12]
Color=(123/255,10/255,210/255) #Matplotlib中定义颜色必须要除以255
plt.plot(head_x,head_y,color=Color,linewidth=10) #分别表示X轴,Y轴,线的颜色,线的宽度
plt.xticks(rotation=45)  #X轴数据旋转45度
plt.xlabel(xlabel="RottenTomatoes_User score")  #X轴标题
plt.ylabel(ylabel="Metacritic score")  #Y轴标题
plt.title("score")  #图片标题
plt.text(80,67,"Hello World")   #在(80,67)的位置添加“Hello World”文字
plt.show()

运行结果:
在这里插入图片描述

子图
如果我们要一次性显示多张图片,那就得写多次图片显示的代码,其实没必要,我们可以在一张大图中显示n多小图。用fig.add_subplot(2,2,X)的函数就可以插入。

这是一个2 * 2的矩阵分别按照1,2,3,4的顺序插入子图,比如我要插在第三个位置上,只需把fig.add_subplot(2,2,X)中的X写成3即可。即fig.add_subplot(2,2,3)
当然也可以在3 * 2,4 * 2,…m * n的矩阵中插入。
在这里插入图片描述

fig=plt.figure()     #创建图片
ax1=fig.add_subplot(2,2,1)  #在大图中显示的位置,矩阵(2*2)的第一个位置
ax2=fig.add_subplot(2,2,2)
ax3=fig.add_subplot(2,2,4)
plt.show()

结果:
在这里插入图片描述
这样我就创建了一张空白的图,大图里面包含3张小图,当然fig.add_subplot(2,2,2)也可以写成(4,4,X),(3,2,X)…的样子。

子图中画内容
上述我们创建了一张包含子图的大图,现在我们在子图中绘制一些内容。

file_unrate=pd.read_csv('UNRATE.csv')  #读文件
date=file_unrate["DATE"][0:12]
unrate=file_unrate["VALUE"][0:12]
fig=plt.figure()     #创建图片
ax1=fig.add_subplot(2,2,1)  #在大图中显示的位置,矩阵(2*2)的第一个位置
ax2=fig.add_subplot(2,2,2)
ax3=fig.add_subplot(2,2,4)
ax1.plot(np.random.randint(1,5,5),np.arange(5)*10)
plt.show()

运行结果:
在这里插入图片描述

一张图中画多个内容

file_unrate=pd.read_csv('UNRATE.csv')  #读文件
file_unrate["DATE"] = pd.to_datetime(file_unrate["DATE"])  #把它转换成1948-07-01这样的格式
file_unrate["month"]=file_unrate["DATE"].dt.month  #取年月日中的月份

fig=plt.figure(figsize=(6,3))   #创建一张6*3的图像大小

plt.plot(file_unrate["month"][0:12],file_unrate["VALUE"][0:12],color="yellow")
plt.plot(file_unrate["month"][12:24],file_unrate["VALUE"][12:24],color="blue")
plt.show()

运行结果:
在这里插入图片描述

多条线段作图注
一般地,如果一张图有很多条线段的话,我们会做一个图注,就像这样的:
在这里插入图片描述
那么,现在我们来给这张图做个图注:

file_unrate=pd.read_csv('UNRATE.csv')  #读文件
file_unrate["DATE"] = pd.to_datetime(file_unrate["DATE"])  #把它转换成1948-07-01这样的格式
color=["red","blue","green","yellow","orange"]
file_unrate["month"] = file_unrate["DATE"].dt.month
fig=plt.figure(figsize=(10,6))
for i in range(0,5):
    data_month=file_unrate["month"][i*12:(i+1)*12] #显示每年1-12月
    data_value=file_unrate["VALUE"][i*12:(i+1)*12]  #显示每年1-12月的失业率值
    label=str(1948+i)   #给每条线段数据做个标签,就是显示的那个标注
    plt.plot(data_month,data_value,color=color[i],label=label)
plt.legend(loc="best")   #将图片标注放在右上角
# print(help(plt.legend()))  #可以使用帮助函数获取loc=""中的值
plt.show()

运行结果:
在这里插入图片描述
对于loc="",我们可以使用帮助函数获取loc=""中的值,打印结果如下:
在这里插入图片描述
所以我们不仅可以使用best,也可以使用right,center…

柱状图
画柱状图,这里使用plt.bar()就可以绘制。

file_unrate=pd.read_csv('UNRATE.csv')  #读文件
name_0_5=file_unrate["DATE"][0:5]
score_0_5=file_unrate["VALUE"][0:5]

fig=plt.figure(figsize=(16,10))#定义画布大小
plt.bar(name_0_5,score_0_5,0.2)  #0.2表示柱状图的宽度
plt.show()

运行结果:
在这里插入图片描述

柱状图添加label等
与折线图一样,柱状图一样可以写上label等说明。

file_unrate=pd.read_csv('UNRATE.csv')  #读文件
name_0_5=file_unrate["DATE"][0:5]
score_0_5=file_unrate["VALUE"][0:5]

fig=plt.figure(figsize=(16,10))#定义画布大小

plt.bar(name_0_5,score_0_5,0.2)  #0.2表示柱状图的宽度
plt.xlabel("year-month")                 #x轴说明
plt.ylabel("unemployment VALUE")        #y轴说明
plt.title("U.S. unemployment rate data")  #标题
plt.xticks(rotation=45)                #x轴数据倾斜45度
plt.show()

运行结果:
在这里插入图片描述

柱状图横着画
柱状图不仅可以竖着画(垂直),也可以横着画(水平),只需要使用plt.barh()就可以绘制了。

file_unrate=pd.read_csv('UNRATE.csv')  #读文件
name_0_5=file_unrate["DATE"][0:5]
score_0_5=file_unrate["VALUE"][0:5]

fig=plt.figure(figsize=(16,10))#定义画布大小

plt.barh(name_0_5,score_0_5,0.2)  #0.2表示柱状图的宽度
plt.ylabel("year-month",fontsize=18)                 #y轴说明,fontsize字体
plt.xlabel("unemployment VALUE",fontsize=18)        #x轴说明
plt.title("U.S. unemployment rate data",fontsize=18)  #标题
plt.xticks(rotation=45,fontsize=18)                #x轴数据倾斜45度
plt.yticks(rotation=45,fontsize=18)
plt.show()

运行结果:
在这里插入图片描述

画散点图
散点图就是在坐标中有一个一个点,这些点由(x,y)构成.

file_unrate=pd.read_csv('fandango_score_comparison.csv')  #读文件
RottenTomatoes_0_100=file_unrate["RottenTomatoes"][0:100]
RottenTomatoes_User_0_100=file_unrate["RottenTomatoes_User"][0:100]#读取文件中该列的前100行数据
fig,ax=plt.subplots()   #定义一张fig大图,一张ax子图
ax.scatter(RottenTomatoes_0_100,RottenTomatoes_User_0_100)   #绘制散点图
ax.set_xlabel("RottenTomatoes score",fontsize=20)  #子图中设置x轴label就需要使用ax.set_xlabel()
ax.set_ylabel("RottenTomatoes_User score",fontsize=20)
ax.set_title("score",fontsize=20)
plt.show()

不过这里需要注意的是,在子图中写x或y轴标题时,需要使用.set_xlabel()才行。
运行结果:
在这里插入图片描述

画柱形图

file_unrate=pd.read_csv('fandango_score_comparison.csv')  #读文件
fig,ax=plt.subplots()

ax.hist(file_unrate["Fandango_Stars"])   #打印柱形图
#ax.hist(file_unrate["Fandango_Stars"],bins=3)   #打印柱形图
#ax.hist(file_unrate["Fandango_Stars"],range=(4,5))   #打印柱形图
plt.show()
file_unrate_count=file_unrate["Fandango_Stars"].value_counts()#统计相同个数
file_unrate_count=file_unrate_count.sort_index()  #排序
print(file_unrate_count)

bins=3表示只取3个分块数组。range=(4,5)表示x的范围是4-5。
运行结果:
在这里插入图片描述
在这里插入图片描述

画盒图

file_unrate=pd.read_csv('fandango_score_comparison.csv')  #读文件
file_unrate_nums=["RottenTomatoes_User","Metacritic","Metacritic_User"]  #定义一个列表数组
fig,ax=plt.subplots()
ax.boxplot(file_unrate[file_unrate_nums].values)
# ax.set_ylim(0,30)
ax.set_xticklabels(file_unrate_nums,rotation=45)     #设置x轴自变量名称和旋转45度
plt.show()

运行结果:
在这里插入图片描述

接下来放上所有实例(需要哪段将哪段注释去掉即可):

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np


#------------------创建一张空图-----------------------
# plt.plot()
# plt.tick_params(left="off",bottom="off")
# plt.show()

#------------------折线图绘制--------------------------
# file_unrate=pd.read_csv('UNRATE.csv')  #读文件
# #file_unrate=pd.to_datetime(file_unrate["DATE"])
# head12=file_unrate[0:12]
# print(head12)
# plt.plot(head12["DATE"],head12["VALUE"]) #分别表示X轴和Y轴
# plt.xticks(rotation=45)  #X轴数据旋转45度
# plt.xlabel(xlabel="date")  #X轴标题
# plt.ylabel(ylabel="jobless rate")  #Y轴标题
# plt.title("U.S. unemployment rate data")  #图片标题
# plt.tick_params()
# plt.show()

#------------------折线图指定线的颜色--------------------------
file_unrate=pd.read_csv('UNRATE.csv')  #读文件
#file_unrate=pd.to_datetime(file_unrate["DATE"])
head12=file_unrate[0:12]
Color=(123/255,10/255,210/255) #Matplotlib中定义颜色必须要除以255
print(head12)
plt.plot(head12["DATE"],head12["VALUE"],color=Color,linewidth=10) #分别表示X轴,Y轴,线的颜色,线的宽度
plt.xticks(rotation=45)  #X轴数据旋转45度
plt.xlabel(xlabel="date")  #X轴标题
plt.ylabel(ylabel="jobless rate")  #Y轴标题
plt.title("U.S. unemployment rate data")  #图片标题
plt.show()


#------------------添加文字--------------------------
# file=pd.read_csv('fandango_score_comparison.csv')  #读文件
#
# head_x=file["RottenTomatoes_User"][0:12]
# head_y=file["Metacritic"][0:12]
# Color=(123/255,10/255,210/255) #Matplotlib中定义颜色必须要除以255
# plt.plot(head_x,head_y,color=Color,linewidth=10) #分别表示X轴,Y轴,线的颜色,线的宽度
# plt.xticks(rotation=45)  #X轴数据旋转45度
# plt.xlabel(xlabel="RottenTomatoes_User score")  #X轴标题
# plt.ylabel(ylabel="Metacritic score")  #Y轴标题
# plt.title("score")  #图片标题
# plt.text(80,67,"Hello World") #在(80,67)的位置添加“Hello World”文字
# plt.show()


#------------------画子图--------------------------
# file_unrate=pd.read_csv('UNRATE.csv')  #读文件
# date=file_unrate["DATE"][0:12]
# unrate=file_unrate["VALUE"][0:12]
# fig=plt.figure()     #创建图片
# ax1=fig.add_subplot(2,2,1)  #在大图中显示的位置,矩阵(2*2)的第一个位置
# ax2=fig.add_subplot(2,2,2)
# ax3=fig.add_subplot(2,2,4)
# plt.show()


#------------------子图中画内容--------------------------
# file_unrate=pd.read_csv('UNRATE.csv')  #读文件
# date=file_unrate["DATE"][0:12]
# unrate=file_unrate["VALUE"][0:12]
# fig=plt.figure()     #创建图片
# ax1=fig.add_subplot(2,2,1)  #在大图中显示的位置,矩阵(2*2)的第一个位置
# ax2=fig.add_subplot(2,2,2)
# ax3=fig.add_subplot(2,2,4)
# ax1.plot(np.random.randint(1,5,5),np.arange(5)*10)
# plt.show()

#------------------一张图中画多个内容--------------------------
# file_unrate=pd.read_csv('UNRATE.csv')  #读文件
# file_unrate["DATE"] = pd.to_datetime(file_unrate["DATE"])  #把它转换成1948-07-01这样的格式
# file_unrate["month"]=file_unrate["DATE"].dt.month  #取年月日中的月份
#
# fig=plt.figure(figsize=(6,3))   #创建一张6*3的图像大小
#
# plt.plot(file_unrate["month"][0:12],file_unrate["VALUE"][0:12],color="yellow")
# plt.plot(file_unrate["month"][12:24],file_unrate["VALUE"][12:24],color="blue")
# plt.show()

#------------------多条线段作图注--------------------------
# file_unrate=pd.read_csv('UNRATE.csv')  #读文件
# file_unrate["DATE"] = pd.to_datetime(file_unrate["DATE"])  #把它转换成1948-07-01这样的格式
# color=["red","blue","green","yellow","orange"]
# file_unrate["month"] = file_unrate["DATE"].dt.month
# fig=plt.figure(figsize=(10,6))
# for i in range(0,5):
#     data_month=file_unrate["month"][i*12:(i+1)*12] #显示每年1-12月
#     data_value=file_unrate["VALUE"][i*12:(i+1)*12]  #显示每年1-12月的失业率值
#     label=str(1948+i)   #给每条线段数据做个标签,就是显示的那个标注
#     plt.plot(data_month,data_value,color=color[i],label=label)
# plt.legend(loc="best")   #将图片标注放在右上角
# print(help(plt.legend()))  #可以使用帮助函数获取loc=""中的值
# plt.show()


#------------------画条形图--------------------------
# file_unrate=pd.read_csv('UNRATE.csv')  #读文件
# name_0_5=file_unrate["DATE"][0:5]
# score_0_5=file_unrate["VALUE"][0:5]
#
# fig=plt.figure(figsize=(16,10))#定义画布大小
# plt.bar(name_0_5,score_0_5,0.2)  #0.2表示条形图的宽度
# plt.show()

#------------------条形图添加label等--------------------------
# file_unrate=pd.read_csv('UNRATE.csv')  #读文件
# name_0_5=file_unrate["DATE"][0:5]
# score_0_5=file_unrate["VALUE"][0:5]
#
# fig=plt.figure(figsize=(16,10))#定义画布大小
#
# plt.bar(name_0_5,score_0_5,0.2)  #0.2表示柱状图的宽度
# plt.xlabel("year-month")                 #x轴说明
# plt.ylabel("unemployment VALUE")        #y轴说明
# plt.title("U.S. unemployment rate data")  #标题
# plt.xticks(rotation=45)                #x轴数据倾斜45度
# plt.show()

#------------------条形图横着画--------------------------
# file_unrate=pd.read_csv('UNRATE.csv')  #读文件
# name_0_5=file_unrate["DATE"][0:5]
# score_0_5=file_unrate["VALUE"][0:5]
#
# fig=plt.figure(figsize=(16,10))#定义画布大小
#
# plt.barh(name_0_5,score_0_5,0.2)  #0.2表示条形图的宽度
# plt.ylabel("year-month",fontsize=18)                 #y轴说明,fontsize字体
# plt.xlabel("unemployment VALUE",fontsize=18)        #x轴说明
# plt.title("U.S. unemployment rate data",fontsize=18)  #标题
# plt.xticks(rotation=45,fontsize=18)                #x轴数据倾斜45度
# plt.yticks(rotation=45,fontsize=18)
# plt.show()

#------------------画散点图--------------------------
# file_unrate=pd.read_csv('fandango_score_comparison.csv')  #读文件
# RottenTomatoes_0_100=file_unrate["RottenTomatoes"][0:100]
# RottenTomatoes_User_0_100=file_unrate["RottenTomatoes_User"][0:100]#读取文件中该列的前100行数据
# fig,ax=plt.subplots()   #定义一张fig图,控制图整体的样子,ax相当于x或y轴
# ax.scatter(RottenTomatoes_0_100,RottenTomatoes_User_0_100)   #绘制散点图
# ax.set_xlabel("RottenTomatoes score",fontsize=20)  #子图中设置x轴label就需要使用ax.set_xlabel()
# ax.set_ylabel("RottenTomatoes_User score",fontsize=20)
# ax.set_title("score",fontsize=20)
# plt.show()


#------------------画柱形图----------------------------
# file_unrate=pd.read_csv('fandango_score_comparison.csv')  #读文件
# fig,ax=plt.subplots()
#
# ax.hist(file_unrate["Fandango_Stars"])   #打印柱形图
# #ax.hist(file_unrate["Fandango_Stars"],bins=3)   #打印柱形图
# #ax.hist(file_unrate["Fandango_Stars"],range=(4,5))   #打印柱形图
# plt.show()
# file_unrate_count=file_unrate["Fandango_Stars"].value_counts()#统计相同个数
# file_unrate_count=file_unrate_count.sort_index()  #排序
# print(file_unrate_count)


#------------------画盒图----------------------------
# file_unrate=pd.read_csv('fandango_score_comparison.csv')  #读文件
# file_unrate_nums=["RottenTomatoes_User","Metacritic","Metacritic_User"]  #定义一个列表数组
# fig,ax=plt.subplots()
# ax.boxplot(file_unrate[file_unrate_nums].values)
# # ax.set_ylim(0,30)
# ax.set_xticklabels(file_unrate_nums,rotation=45)     #设置x轴自变量名称和旋转45度
# plt.show()
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值