内容目录
Matplotlib的使用方法¶
安装方法¶
1.使用pip安装Matplotlib:
pip install matplotlib
2.如果您使用的是Anaconda发行版,可以通过conda安装Matplotlib:
conda install matplotlib
函数介绍¶
plot函数用于绘制折线图,其主要参数包括:
plot([x], y , [fmt], data, **kwargs)
- x:x轴数据,用于指定折线图中横坐标的数据。
- y:y轴数据,用于指定折线图中纵坐标的数据。
- color:折线颜色,用于指定折线的颜色。
- linestyle:折线线型,用于指定折线的线型。
- linewidth:折线宽度,用于指定折线的宽度。
- marker:数据点标记类型,用于标记数据点的形状。
- markersize:数据点标记大小,用于指定数据点标记的大小。
- label:折线标签,用于添加折线的标签。
- alpha:透明度,用于指定折线的透明度。
plot函数说明地址https://matplotlib.org/3.8.4/api/_as_gen/matplotlib.pyplot.plot.html#matplotlib.pyplot.plot
基本使用方法¶
In [15]:
import matplotlib.pyplot as plt
import numpy as np
# 准备数据
y = np.random.randint(0, 10, 10)
x = range(10)
# 使用plot方法
plt.plot(x, y)
# 添加标题和标签
plt.title('This is a plot example')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
# 显示图形
plt.show()
In [27]:
import pandas as pd
# 使用data的方式绘制图形
mydata = {
'x': range(5, 25),
'y': [np.random.randint(0, 10) for x in range(20)]
}
mydf = pd.DataFrame(data=mydata)
#使用DataFrame时,plt会自动识别Dataframe中列数据的头索引
plt.plot('x', 'y', '--', data=mydata )
plt.show()
plot函数使用注意事项
- plt.plot可以只传Y轴的值,如果只传Y轴的值,那么X轴就会默认使用range(0, Y的长度)
- plt.plot的x和y参数不能够作为关键字参数来传递,即plt.plot(x=x, y=y),这种方式会保存
- plt.plot的data参数可以为一个字典或者DataFrame对象,然后在x和y上制定这个列的名字,那么plot会自动读取。
- plt.plot在传入参数时,如果函数形式是plt.plot(x, y, fmt, data),如果传参时没有给fmt的话,可能会产生警告提示,这种情况下需要将fmt也传参(一般fmt传空字符串)
设置折线图方法¶
In [3]:
import matplotlib.pyplot as plt
import numpy as np
y = [np.random.randint(0, 10) for x in range(10)]
plt.plot(y, linewidth=2, color='r', linestyle='--')
Out[3]:
[<matplotlib.lines.Line2D at 0x13243af50>]
In [9]:
y1 = [np.random.randint(0, 10) for x in range(10)]
y2 = [np.random.randint(0, 10) for x in range(10)]
lines = plt.plot(range(10),y1, range(10), y2)
line = lines[0]
line.set_color('r')
line.set_linewidth(0.4)
line.set_alpha(0.3)
In [11]:
y1 = [np.random.randint(0, 10) for x in range(10)]
y2 = [np.random.randint(0, 10) for x in range(10)]
lines = plt.plot(range(10),y1, range(10), y2)
plt.setp(lines, linewidth=1)
Out[11]:
[None, None]
注意事项
- 1、使用plot绘图的时候,在传参的时候实际上是给Line2D对象设置属性值,以此修改线条的样式。
- 2、使用plot放回的线条,可以单独设置线条样式,主要使用的是set_Line2D属性名方法实现。
- 3、使用plt.setp来一次性设置多个线条的样式
设置标题¶
In [17]:
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import font_manager
y = [np.random.randint(0,10) for x in range(10)]
plt.plot(y)
# 设置为中文时如果显示乱码,需要配置显示的字体
plt.rcParams['font.sans-serif'] = ['PingFang HK']
plt.rcParams['font.size'] = 20
plt.title('折线图')
Out[17]:
Text(0.5, 1.0, '折线图')
设置轴¶
In [36]:
# 随机产生一只股票过去20天的交易量数据
stock_volume_data = [np.random.randint(10000, 50000) for x in range(20)]
stock_volume_data_decimal = [volume / 1000 for volume in stock_volume_data]
stock_volume_data_decimal
# 设置显示的字体和字体大小
plt.rcParams['font.sans-serif'] = ['PingFang HK']
plt.rcParams['font.size'] = 8
# 设置画布的长宽
plt.figure(figsize=(10,5))
plt.plot(stock_volume_data_decimal, marker='.')
plt.xticks(range(20), ['第%d天' %x for x in range(1,21)])
plt.xlabel('天数')
plt.ylabel('交易量(单位:股)')
plt.title('X股票过去20天的交易数据')
plt.grid(True)
plt.show()
注意事项
- 1、可以通过plt.title设置图片的标题
- 2、刻度是通过xticks和yticks来设置的。xticks需要传递两个参数,第一个参数ticks只要保持与数据量一致即可,第二个参数labels时用来设置每个刻度上的显示内容。
- 3、轴名称是通过xlabes和ylables来设置
- 4、默认plot是不支持中文的,需要通过plt.rcParams[\’font.sans-serif\’]来配置字体
- 5、如果图片大小不合适,可以通过plt.figure设置画布的大小
设置文本注释¶
In [53]:
plt.plot(np.sin(np.arange(20)), marker='o')
# 如果想给第一个点增加注释
plt.annotate('(0.0)', xy=(0,0), xytext=(-0.5, -0.8), arrowprops=
{'width':0.5, 'headwidth':5, 'headlength': 10, 'shrink':0.3})
Out[53]:
Text(-0.5, -0.8, '(0.0)')
In [54]:
# 批量给所有点增加说明的方法
y = np.sin(np.arange(20))
plt.plot(y, marker='o')
for index, value in enumerate(y):
plt.annotate('(%.2f, %.2f)' % (index, value), xy=(index, value), xytext=(index-0.1, value-0.1))
注意事项
- 1、如果希望绘制的图线节点中显示对应的内容,可以使用plt.annotate设置文本注释功能
- 2、plt.annotate(text, xy, xytext, arrowprops)中text用来显示注释的文本,xy代表需要注释的坐标点,xytext代表注释文本的坐标点,arrowprops代表的是箭头的一些属性。
- 3、plot.annotate的官方API说明可以查询https://matplotlib.org/3.8.4/api/_as_gen/matplotlib.pyplot.annotate.html#matplotlib.pyplot.annotate
设置画板的样式¶
In [66]:
import matplotlib.pyplot as plt
import numpy as np
# 生成x轴数据,从0到4π,间隔0.1
x = np.arange(0, 4*np.pi, 0.1)
# 计算对应的正弦值
y = np.sin(x)
plt.figure(figsize=(12, 4), facecolor='r', dpi=200)
plt.plot(x, y, color='blue', label='sin(x)')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.title('正弦函数')
plt.legend()
plt.grid(True)
plt.show()
注意事项
- 1、plt.figure可以用来设置画板的样式,该函数需要在所有绘图之前来完成
- 2、figsize参数是元组,第一个参数是宽度,第二个参数是高度
- 3、facecolor是设置画板的颜色
- 4、edgecolor是设置边框颜色,默认情况下边框宽度是0,所以如果要看到边框需要设置linewidth大于0
- 5、dpi是设置画板的像素点