Matplotlib绘图函数应用总结

Matplotlib三层结构

  • 容器层
    • 画板层
    • 画布层plt.figure(figsize=(20, 8), dpi=80)
    • 绘图区
  • 辅助显示层
    • x,y刻度plt.x/yticks()
    • 描述信息plt.x.ylabel()
    • 标题plt.title()
    • 图例plt.legend()
    • 网格plt.grid()
  • 图像层
    • 折线图plt.plot()
    • 散点图plt.scatter()
    • 柱状图plt.bar()
    • 直方图plt.hist()
    • 饼图plt.pie()

折线图

面向过程绘图

import matplotlib.pyplot as plt#导入库
import random
#coding:utf-8
#用以正常显示中文
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
#准备数据
x=range(60)
#随机生成数据
y_shanghai=[random.uniform(15, 18)for i in x]
y_beijing=[random.uniform(1, 3) for i in x]
#创建画布
plt.figure(figsize=(20, 8), dpi=80)
#绘制图像
plt.plot(x, y_shanghai, color="r", linestyle="--", label="上海")
plt.plot(x, y_beijing, color="b", label="北京")
#显示图例
plt.legend()
#plt.legend(loc="lower left")#图例位置
#修改x,y刻度
x_label=["11点{}分".format(i) for i in x]
plt.xticks(x[::5], x_label[::5])
plt.yticks(range(0, 40, 5))
#添加网格显示(alpha为透明度)
plt.grid(True, linestyle="--", alpha=0.5)
#添加描述信息
plt.xlabel("时间变化")
plt.ylabel("温度变化")
plt.title("某城市11点到12点每分钟的温度变化")
#图像显示
plt.show()

图像

在这里插入图片描述

面向对象绘图

import matplotlib.pyplot as plt#导入库
import random
#coding:utf-8
#用以正常显示中文
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
#准备数据
x=range(60)
#随机生成数据
y_shanghai=[random.uniform(15, 18)for i in x]
y_beijing=[random.uniform(1, 3) for i in x]
#创建画布
#plt.figure(figsize=(20, 8), dpi=80)
figure, axes=plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=80)#1*2
#绘制图像
axes[0].plot(x, y_shanghai, color="r", linestyle="--", label="上海")
axes[1].plot(x, y_beijing, color="b", label="北京")
#显示图例
axes[0].legend()
axes[1].legend()
#plt.legend(loc="lower left")#图例位置
#修改x,y刻度
x_label=["11点{}分".format(i) for i in x]
axes[0].set_xticks(x[::10])
axes[0].set_xticklabels(x_label[::10])
axes[0].set_yticks(range(0, 40, 5))
axes[1].set_xticks(x[::10])
axes[1].set_xticklabels(x_label[::10])
axes[1].set_yticks(range(0, 40, 5))
#添加网格显示(alpha为透明度)
axes[0].grid(True, linestyle="--", alpha=0.5)
axes[1].grid(True, linestyle="--", alpha=0.5)
#添加描述信息
axes[0].set_xlabel("时间变化")
axes[0].set_ylabel("温度变化")
axes[0].set_title("上海11点到12点每分钟的温度变化")
axes[1].set_xlabel("时间变化")
axes[1].set_ylabel("温度变化")
axes[1].set_title("北京11点到12点每分钟的温度变化")
#图像显示
plt.show()

图像

在这里插入图片描述

绘制数学函数图像

#准备数据
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-10, 10, 1000)
y=2*x**2
#创建画布
plt.figure(figsize=(20, 8), dpi=80)
#绘制图像
plt.plot(x, y, linestyle="-")
#添加网格
plt.grid(linestyle="--", alpha=0.5)
# 显示图像
plt.show()

图像

在这里插入图片描述

散点图

#准备数据
x=range(0, 10)
y=range(0, 20, 2)
#创建画布
plt.figure(figsize=(20, 8), dpi=80)
#绘制图像
plt.scatter(x, y)
#显示图像
plt.show()

图像

在这里插入图片描述

柱状图

普通柱状图

#数据
movie_name=range(10, 20)
tickets=range(1, 11)
#创建画布
plt.figure(figsize=(20, 8), dpi=80)
#绘制柱状图
x_ticks=range(len(movie_name))
plt.bar(x_ticks, tickets, color=["b","r","g","y","c","m","y","k","c","g"])
#修改x刻度
plt.xticks(x_ticks, movie_name)#第二个参数为电影名
plt.title("电影票房")
plt.xlabel("电影名")
plt.ylabel("票房")
#添加网格
plt.grid(linestyle='--', alpha=0.5)
#显示图像
plt.show()

图像

在这里插入图片描述

柱状对比图

import matplotlib.pyplot as plt
#coding:utf-8
#用以正常显示中文
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
#准备数据
movie_name=range(0, 3)
first_day=range(100, 103)
first_weekend=range(1000, 1003)
#创建画布
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.grid(linestyle="--", alpha=0.5)
#图像展示
plt.show()

图像

在这里插入图片描述

直方图

  • 组数
  • 组距

直方图展示数据分布, 柱状图比较数据大小
组数=(max-min)/ 组距

#电影时长的分布状况
#准备数据
time=[131,98,125,131,124,139,131,117,128,188,135,138,131,102,107]
#创建画布
plt.figure(figsize=(20, 8), dpi=80)
#画图
dis=5#组距
group_num=(max(time)-min(time))//dis#组数
plt.hist(time, bins=group_num, density=True)#数据,组数,是否在y轴显示频率(否则为频数)
#x刻度修改
plt.xticks(range(min(time), max(time)+dis, dis))
#添加网格
plt.grid(linestyle="--", alpha=0.5)
#坐标标注
plt.xlabel("x")
plt.ylabel("y")
#图像显示
plt.show()

图像

在这里插入图片描述

饼图

  • 若超过九个就用柱状图(饼图太乱)
#数据
name=range(10)
count=range(10)
color=[]
for i in range(10):#我懒得调颜色就全写成蓝色了,大家可以自己改下
    color.append('b')
#画布
plt.figure(figsize=(20, 8), dpi=80)
#画图
plt.pie(count, labels=name, colors=color, autopct="%1.2f%%")
plt.axis('equal')#保证圆形
#图例
plt.legend()
#展示
plt.show()

图像

在这里插入图片描述

posted @ 2020-03-24 11:11  ccql  阅读(3)  评论(0编辑  收藏  举报  来源