笔记:Matplotlib

Matplotlib

一、如何使用Matplotlib

这里以折线图为例。

1. 导入pyplot

from matplotlib import pyplot as plt

“as plt” 的目的是为了简便,这样可以直接使用plt来引用pyplot库。

2. 输入数据

瞎编一个情境:将一些草履虫放在培养皿中培养,从第2个小时,每隔2小时测一次草履虫的数量,直到第10小时为止。

from matplotlib import pyplot as plt
x = range(2,12,2)       # x轴的数据
y = [26,27,22,18,15]    # y轴的数据
# x、y中的数据一一对应组成了要绘制的坐标(2,26),(4,27),......

Attention: 这里x、y中数据的数量必须一致,否则会报错。

3.传入数据

plt.plot()

from matplotlib import pyplot as plt
x = range(2,12,2)
y = [26,27,22,18,15]
plt.plot(x,y)      #传入x和y,通过plot绘制图像
关于plt.plot()的参数

plt.plot(x,y,ls,lw,label,color)

参数名称参数作用
x传入数据
y传入数据
ls线型(linestyle)
lw线宽(linewidth)
label标签文本内容
color颜色,如:color=‘blue’

4.显示图像

仅仅是传入数据,并不会显示图像,而要用plt.show()来显示。

from matplotlib import pyplot as plt
x = range(2,12,2)
y = [26,27,22,18,15]
plt.plot(x,y)
plt.show()         #在执行程序的时候展示图像

绘制出的图像如下:
在这里插入图片描述

二、一些其他的操作

1. 设置图片大小

fig = plt.figure(figsize=(宽, 高),dpi= )

fig = plt.figure(figsize=(20,8),dpi=80)
  • 这样就可以调节图片的宽和高
  • 传入dpi参数是为了让图片更清晰

Attention:

设置图片大小这一步:

(1)要放在”导入pyplot“这一步之后,否则会报错:'plt’未被定义。

(2)要放在传入数据之前,否则会得到两个图像,一个是没有改变大小的图像,另一个是改变了大小的图像,但没有数据。

(3)要放在"plt.show()"之前。

2.设置x(y)轴的刻度

plt.xticks()

from matplotlib import pyplot as plt
x = range(2,12,2)
y = [26,27,22,18,15]
plt.plot(x,y)
plt.xticks(x)      #以x的值作为x轴的刻度

设置之后x轴就变成这样了:
在这里插入图片描述

当然,刻度可以任意调节,关键是要调到合适的刻度。

关于plt.xsticks()的参数

plt.xsticks(ticks, label, color= ,rotation= )

参数名称参数作用
ticks(数组)用于设置x轴刻度间隔
label用于设置每个间隔的显示标签,与ticks一一对应
color颜色
rotation标签旋转(逆时针)的角度

3.设置中文刻度

测量10点到12点之间每分钟的气温,并设置x轴刻度为10分钟。

import random  #随机数
from matplotlib import pyplot as plt

x = range(120)
y = [random.randint(20,35) for i in range(120)]
                                #生成120个在[20,35]之间的整数

plt.figure(figsize=(20,8),dpi=80)

plt.plot(x,y)

time = ["10点{}分".format(i) for i in range(60)]
time += ["11点{}分".format(i) for i in range(60)]
plt.xticks(list(x)[::10],time[::10],rotation=60)

plt.show()

这个程序运行得到的图像,是不会显示中文的:
在这里插入图片描述

解决措施:

通过matplotlib.rc来修改。

(1)先查看matplotlib.rc的源码
在这里插入图片描述

(2)再复制font那一段,进而修改字体、粗细、大小。

这里有一些字体:
在这里插入图片描述

修改后的代码是这样的:(以“仿宋”字体为例)

import random
from matplotlib import pyplot as plt

#这里为修改字体的操作
import matplotlib
font = {'family' : 'FangSong'}
matplotlib.rc("font",**font)

x = range(120)
y = [random.randint(20,35) for i in range(120)]

plt.figure(figsize=(20,8),dpi=80)

plt.plot(x,y)

time = ["10点{}分".format(i) for i in range(60)]
time += ["11点{}分".format(i) for i in range(60)]
plt.xticks(list(x)[::10],time[::10],rotation=60)

plt.show()

这个程序执行得到的图像,会显示中文:
在这里插入图片描述

4.设置中文注释

这个图像的内容是什么呢?x、y轴分别表示什么呢?

这需要我们在图像上标注出来。

x轴上的注释:plt.xlabel()
y轴上的注释:plt.ylabel()
标题:plt.title()

import random
from matplotlib import pyplot as plt

import matplotlib
font = {'family' : 'FangSong'}
matplotlib.rc("font",**font)

x = range(120)
y = [random.randint(20,35) for i in range(120)]

plt.figure(figsize=(20,8),dpi=80)

plt.plot(x,y)

time = ["10点{}分".format(i) for i in range(60)]
time += ["11点{}分".format(i) for i in range(60)]
plt.xticks(list(x)[::10],time[::10],rotation=60)

plt.xlabel("时间")
plt.ylabel("温度 单位(℃)")
plt.title("10点到12点每分钟的气温变化情况")

plt.show()

得到的图像是这样的:
在这里插入图片描述

5. 设置图例

plt.lengend()

关于plt.legend()的参数
参数名称参数作用
loc设置图例位置
frameonframeon=False(去掉边框)
edgecolor设置图例边框颜色
facecolor设置图例背景颜色,若无边框则此参数无效
title设置图例标题

三、绘制不同的图像

1. 散点图

和折线图差不多,大概就是函数不一样。

plt. scatter(x, y, c, marker)

Attention: x、y两个序列的长度必须相同

关于plt.scatter()的参数
参数名称参数作用
c表示色彩或颜色序列,默认为蓝色’b’
marker表示标记的样式,默认为’o’

2.条形图

和折线图、散点图差不多,大概就是函数不一样。

plt.bar()

ps: 如果要绘制横着的条形统计图,要用函数plt.barh()

Attention: 这两个函数的参数有所区别,如width、height…实在不想写了。

遇事不决,Ctrl加左键。给我查源码去!

多次条形统计图
from matplotlib import pyplot as plt

a = range(1,5)
b1 = [15,21,24,16]
b2 = [12,15,20,16]
b3 = [23,18,23,30]

#这里定义两个变量,后边控制统计图的距离、统计图的宽度会用到
bar_width1 = 0.2
bar_width2 = 0.2

#设置x轴上相邻两条不同统计图的距离
x1 = list(a)
x2 = [i+bar_width1 for i in x1]    #x2的第n项为x1的第n项加0.2
x3 = [i+bar_width1*2 for i in x1]  #x3的第n项为x1的第n项加0.2*2

#设置每条统计图的宽度
plt.bar(x1,b1,width=bar_width2)
plt.bar(x2,b2,width=bar_width2)
plt.bar(x3,b3,width=bar_width2)

plt.show()

得到的图像:
在这里插入图片描述

这个程序中 bar_width1 和 bar_width2 相等,所以得到的不同条形中间没有间隔。

3.直方图

plt.hist(x, bins)

关于plt.hist()的参数
参数名称参数作用
x存放数据
bins表示组数
import random
from matplotlib import pyplot as plt

a = [random.randint(80,120) for i in range(100)]

#传入数据,并设置组数
plt.hist(a,bins=20)

#添加网格
plt.grid()

plt.show()

得到的图像如下:
在这里插入图片描述

4. 饼状图

plt.pie()

关于plt.pie()的参数
参数名称参数作用
x每个扇形所占的比例或者一个数组
labels给每个扇形提供标签
explode输入一个长度为len(x)数组,将每块扇形以输入的距离分离
autopct“%.2f%%”,表示保留两位小数
from matplotlib import pyplot as plt

#设置中文
import matplotlib
font = {'family' : 'FangSong'}
matplotlib.rc("font",**font)

#设置标签
tips = ['购物','交通','娱乐','饮食','其他']

#输入每个标签所占的数量
x = [300,200,500,600,400]

#设置分离的距离
apart = [0.03,0.05,0.06,0.04,0.1]

plt.pie(x,labels=tips,autopct='%.2f%%',explode=apart)

plt.show()

得到的图像如下:在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值