1.Matplotlib三层?
? ? ? ? Matplotlib三层结构_xiaoyaGrace的博客-CSDN博客
2.折线图与基本的绘画功能
import matplotlib.pyplot as plt
import random
from matplotlib.font_manager import FontProperties #该函数设置局部字体变量
import matplotlib
#显示中文 C:\Windows\Fonts 在这里找你能用的字体
#方法一:
# font = FontProperties(fname=r"C:\Windows\Fonts\SIMYOU.TTF",size=12)#在路径下找相应的字体定义好局部字体
#方法二: 这是设置全局变量
font = {'family':'SimHei','size':12}
matplotlib.rc("font",**font)
#需求:画出某城市11点到12点一小时内每分钟的温度变化折线图,温度范围在15-19度
#准备数据 x,y
x = range(60)
y = [random.uniform(15,19) for i in x]
y_beijing = [random.uniform(1,3) for i in x] #北京的状况
#创建画板
plt.figure(figsize=(60,18),dpi=80)
#绘制图像
plt.plot(x,y,color="r",linestyle="--",label="上海")
plt.plot(x,y_beijing,color="b",label="北京")
#显示图例
plt.legend()#是默认 详情其他可看p11最后几分钟
#调整x,y的刻度
x_label = ["11点{}分".format(i) for i in x]#设置合适的x轴标签
plt.xticks(x[::5],x_label[::5])#将标签与x轴的表示一一对应
plt.yticks(range(0,40,5))
#添加网格显示
plt.grid(linestyle="--",alpha=0.5)#true 显示网格 alpha表示透明度
#添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("某城市十一点到十二点的温度变化")
#查看图像
plt.show()
?3.多个坐标系显示,面向对象的画图方法
import matplotlib.pyplot as plt
import random
from matplotlib.font_manager import FontProperties #该函数设置局部字体变量
import matplotlib
#显示中文 C:\Windows\Fonts 在这里找你能用的字体
#方法一:
# font = FontProperties(fname=r"C:\Windows\Fonts\SIMYOU.TTF",size=12)#在路径下找相应的字体定义好局部字体
#方法二: 这是设置全局变量
font = {'family':'SimHei','size':12}
matplotlib.rc("font",**font)
#需求:画出某城市11点到12点一小时内每分钟的温度变化折线图,温度范围在15-19度
#准备数据 x,y
x = range(60)
y = [random.uniform(15,19) for i in x]
y_beijing = [random.uniform(1,3) for i in x] #北京的状况
#创建画布
figure,axes = plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=80)#创建多个坐标系,一行两列
#绘制图像
axes[0].plot(x,y,color="r",linestyle="--",label="上海")
axes[1].plot(x,y_beijing,color="b",label="北京")
#显示图例
axes[0].legend()#是默认 详情其他可看p11最后几分钟
axes[1].legend()
#调整x,y的刻度
x_label = ["11点{}分".format(i) for i in x]#设置合适的x轴标签
axes[0].set_xticks(x[::5])#将标签与x轴的表示一一对应
axes[0].set_xticklabels(x_label[::5])
axes[0].set_yticks(range(0,40,5))
axes[1].set_xticks(x[::5])#将标签与x轴的表示一一对应
axes[1].set_xticklabels(x_label[::5])
axes[1].set_yticks(range(0,40,5))
#添加网格显示
axes[0].grid(linestyle="--",alpha=0.5)#true 显示网格 alpha表示透明度
axes[1].grid(linestyle="--",alpha=0.5)#true 显示网格 alpha表示透明度
#添加描述信息
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("上海十一点到十二点的温度变化")
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("北京十一点到十二点的温度变化")
#查看图像
plt.show()
4.折线的应用场景:某事物,某指标随时间的变化状况
? ? ? ? 也可以画平滑的函数图像,但是需要将点描的多一点?
import numpy as np
import matplotlib.pyplot as plt
#画y=2*x*x的图像
x = np.linspace(-1,1,1000)#创建-1到1之间1000个数,前后都包括
y = 2*x*x
#创建画布
plt.figure(figsize=(20,8),dpi=80)
#绘制图像
plt.plot(x,y)
#添加网格显示
plt.grid(linestyle="--",alpha=0.5)
#显示图像
plt.show()
5.散点图:主要是进行比对不同变量间的关系或者规律
#探究房屋面积和房屋价格的关系
import matplotlib.pyplot as plt
x = [255.98,247.07,253.14,457.85,241.58,301.01,20.67,288.64,163.56,120.06,207.83,342.75,
147.9,53.06,224.72,29.51,21.61,483.21,245.25,399.25,343.35]#面积
y = [196.63,203.88,210.75,372.74,202.41,247.61,24.9,239.34,140.32,104.15,176.84,288.23,
128.79,49.64,191.74,33.1,30.74,400.02,205.35,330.64,283.45]#房屋价格
#创建画布
plt.figure(figsize=(20,8),dpi=80)
#绘制图像
plt.scatter(x,y)
#展示图像
plt.show()
6.柱状图:统计/对比不同类别的数据
#对比每部票房的收入
import matplotlib.pyplot as plt
import matplotlib
font={'family':'SimHei','size':12}
matplotlib.rc('font',**font)
#------------电影票房收入对比-----------------------
# move = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','lol']
# tickets = [73853,57767,22354,15969,8725,8716,8318,7916,6764,52222]
# #创建画布
# color = ['b','r','g','y','c','m','y','k','c','g']
# plt.figure(figsize=(20,8),dpi=80)
# #绘制图像
# plt.bar(range(len(move)),tickets,color=color)#这里只能先renge长度,建立好长度之后在根据xtick改刻度
# #改变x的刻度
# plt.xticks(range(len(move)),move)
# #添加标题
# plt.title("电影票房收入显示")
# #添加网格显示
# plt.grid(linestyle="--",alpha=0.5)
# #展示图像
# plt.show()
# #--------------------对比同日票房收入------------------------
# movie_name = ['雷神3:诸神黄昏','正义联盟','寻梦环游记']
# first_day = [10587.6,10062.5,1275.7]
# first_weekend = [36224.9,34479.6,11830]
# #创建画布
# plt.figure(figsize=(20,8),dpi=80)
# #绘制图像
# plt.bar(range(3),first_day,width=0.2,label='首日票房')
# plt.bar([0.2,1.2,2.2],first_weekend,width=0.2,label='首周票房')
# #修改刻度
# plt.xticks([i+0.1 for i in range(3)],movie_name)
# #显示图例
# plt.legend()
# #显示图像
# plt.show()
7.直方图:反应一组数据的分布状况
#电影时长分布状况
import matplotlib.pyplot as plt
import matplotlib
font={"family":"SimHei","size":12}
matplotlib.rc("font",**font)
#获取数据
time = [131,98,125,131,124,139,131,117,128,108,135,138,131,102,107,135,139,134,136,122,118,123,128,124]
#创建画布
plt.figure(figsize=(20,8),dpi=80)
#绘画 组数=(最大值-最小值)//组距
distance = 2
#group_num = (max(time)-min(time))//distance 有可能产生偏差
plt.hist(time,bins=range(min(time),max(time)+2,distance))#还有个参数normed=true表示y轴显示频率
#x的刻度
plt.xticks(range(min(time),max(time)+2,distance))
#添加表格
plt.grid(linestyle='--',alpha=0.5)
#标题
plt.title("直方图")
#展示
plt.show()
8.饼图:数据的占比情况,但是超过九个,就不建议用饼图了,最好用柱状图
#电影时长分布状况
import matplotlib.pyplot as plt
import matplotlib
font={"family":"SimHei","size":12}
matplotlib.rc("font",**font)
#获取数据
move = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','lol']
tickets = [73853,57767,22354,15969,8725,8716,8318,7916,6764,52222]
color = ['b','r','g','y','c','m','y','k','c','g']
#创建画布
plt.figure(figsize=(20,8),dpi=80)
#绘制饼图
plt.pie(tickets,labels=move,colors=color,autopct="%1.2f%%")
plt.axis('equal')
#显示图例
plt.legend()
#展示
plt.show()
|