python学习笔记之Matplotlib

一、Matplotlib三层结构

  • 容器层
    • 画板层(Canvas)
    • 画布层(Figure):plt.figure()
    • 绘图区/坐标系(Axes):plt.subplots()
  • 辅助显示层
    • 坐标(axis)、图例(legend)等
  • 图像层

二、常见图表

  • 折线图 plot
  • 散点图 scatter
  • 柱状图 bar
  • 直方图 histogram
  • 饼状图 pie

三、折线图(plot)与基础绘制功能

  • 单个绘图区画两条折线
import matplotlib.pyplot as plt
import random
#导入库

%matplotlib inline   
#环境

#1、准备数据
x = range(60)
y = [random.uniform(15,18) for i in x]
y1 = [random.uniform(1,3) for i in x]

# 2、创建画布(容器层)
plt.figure(figsize=(20,8),dpi=80)
# figsize:指定图的长宽
# dpi:图像的清晰度


# 3、绘制折线图(图像层)
plt.rcParams['font.sans-serif'] = 'SimHei'   # 设置字体
plt.rcParams['axes.unicode_minus']= False    # 字符显示

plt.plot(x,y,color = 'r',linestyle= '--',label='城市1') 
plt.plot(x,y1,color = 'b',label='城市2') 
# color:颜色,r红色,g绿色,b蓝色,w白色,c青色,m洋红等
# linestyle:线条风格,-实线,--虚线,-.点划线,:点虚线,''留空、空格

#显示图例
plt.legend(loc='best')
# loc:图例位置

# 修改x的刻度
# 准备x的刻度说明
x_label = ['11时{}分'.format(i) for i in x]
plt.xticks(range(0,61,5),x_label[::5])

# 修改y的刻度
plt.yticks(range(0,40,5))
# range(0,40,5) 0到40每隔5步,或者写为range(40)[::5]

# 添加网格
plt.grid(True,linestyle='--',alpha=0.5)
# 是否添加网格,默认True/线条风格/透明度

# 添加描述信息
plt.xlabel('时间变化')
plt.ylabel('温度变化')
plt.title('某两个城市温度变化时间图')

#保存图像
plt.savefig('test')
#注意:plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片

# 4、显示图像
plt.show()      

在这里插入图片描述

  • 多个绘图区画折线
import matplotlib.pyplot as plt
import random
#导入库

%matplotlib inline   
#环境

#1、准备数据
x = range(60)
y = [random.uniform(15,18) for i in x]
y1 = [random.uniform(1,3) for i in x]

# 2、创建画布(容器层)
figure,axes = plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=80)
# nrows/ncols:绘图区行/列
# figsize:指定图的长宽
# dpi:图像的清晰度
#返回两个对象:figure图对象,ax设置


# 3、绘制折线图(图像层)
plt.rcParams['font.sans-serif'] = 'SimHei'   # 设置字体
plt.rcParams['axes.unicode_minus']= False    # 字符显示

axes[0].plot(x,y,color = 'r',linestyle= '--',label='城市1') 
axes[1].plot(x,y1,color = 'b',label='城市2') 
# color:颜色,r红色,g绿色,b蓝色,w白色,c青色,m洋红等
# linestyle:线条风格,-实线,--虚线,-.点划线,:点虚线,''留空、空格

#显示图例
axes[0].legend(loc='best')
axes[1].legend()
# loc:图例位置

# 修改x,y的刻度
# 准备x、y的刻度说明
x_label = ['11时{}分'.format(i) for i in x]
axes[0].set_xticks(range(0,61,5))
axes[0].set_yticks(range(0,40,5))

axes[1].set_xticks(range(0,61,5))
axes[1].set_yticks(range(0,40,5))
# Axes.set_xticks()只有两个参数,无法设置标注,因此用下述方法

axes[0].set_xticklabels(x_label[::5])
axes[1].set_xticklabels(x_label[::5])
# range(0,40,5) 0到40每隔5步,或者写为range(40)[::5]

# 添加网格
axes[0].grid(True,linestyle='--',alpha=0.5)
axes[1].grid(True,linestyle='--',alpha=0.5)
# 是否添加网格,默认True/线条风格/透明度

# 添加描述信息
axes[0].set_xlabel('时间变化')
axes[0].set_ylabel('温度变化')
axes[0].set_title('某城市1温度变化时间图')

axes[1].set_xlabel('时间变化')
axes[1].set_ylabel('温度变化')
axes[1].set_title('某城市2温度变化时间图')

#保存图像
plt.savefig('test1')
#注意:plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片

# 4、显示图像
plt.show()          

在这里插入图片描述

四、柱状图(bar)

import matplotlib.pyplot as plt

# 1、准备数据
movie_names = ['电影1','电影2','电影3','电影4','电影5','电影6','电影7','电影8','电影9','电影10','电影11']
tickets = [12312,23423,43653,95984,39123,83829,12345,40222,29840,73636,63873]

# 2、创建画布
plt.figure(figsize=(20,8),dpi=80)

# 3、绘制柱状图
x_ticks = range(len(movie_names))
plt.bar(x_ticks,tickets,color=['r','k','y','g','c','b','g','k','c','m','c'])

# 修改x刻度
plt.xticks(x_ticks,movie_names)

# 添加标题
plt.title('电影票房收入对比')

# 4、显示图像
plt.show()

在这里插入图片描述

import matplotlib.pyplot as plt

# 1、准备数据
movie_names = ['电影1','电影2','电影3']
first_day = [12312,23423,43653]
first_week = [80938,84737,90283]

# 2、创建画布
plt.figure(figsize=(20,8),dpi=80)

# 3、绘制柱状图
plt.bar(range(3),first_day,width=0.2,label='首日票房')
plt.bar([0.2, 1.2, 2.2],first_week,width=0.2,label='首周票房')

# 显示图例
plt.legend()

# 修改x刻度
plt.xticks([0.1,1.1,2.1],movie_names)

# 添加标题
plt.title('电影票房收入对比')

# 4、显示图像
plt.show()

在这里插入图片描述
五、饼状图api

  • 注意显示的百分比的位数
  • plt.pie(x,labels=,autopct=,colors=)
    • x:数量,自动算百分比
    • labels:每部分名称
    • autopct:占比显示指定’%1.2f%%’
    • colors:每部分颜色
  • 为了让显示的饼图保持圆形,需要添加axis保证长宽一样
    • plt.axis(‘equal’)

六、直方图api

  • plt.hist(x,bins=,normed=,color=)
    • x:数据、数量
    • bins:组数
    • normed:参数指定密度,也就是每个条状图的占比例比,默认为1
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值