龙听期货论坛's Archiver

龙听 发表于 2024-3-12 13:01

Matplotlib(绘图库)- 自定义图形

绘图区域主要包括线颜色、标记、线型、文本标注、图例、坐标轴、标题等要素,下面对这些要素展开讲解。

1 线颜色

别名             颜色   
b               蓝色  
g               绿色
r               红色  
y               黄色
c               青色
k               黑色   
m               洋红色
w               白色

下面分别绘制三条曲线,线颜色依次为红、蓝、绿。实例如下:[code]import matplotlib.pyplot as plt  # 为方便简介为plt
import numpy as np  # 画图过程中会使用numpy
import pandas as pd  # 画图过程中会使用pandas
#使用numpy产生数据
x = np.arange(-5,5,0.5)  # 定义x数据范围
y1 = x*3  # 定义y1数据范围
y2 = x*x  # 定义y2数据范围
y3 = np.sin(x)

#创建窗口、子图
fig = plt.figure()  # 先创建窗口一个窗口
ax1 = fig.add_subplot(3,1,1)  #通过fig添加子图,参数:行数,列数,第几个。
ax2 = fig.add_subplot(3,1,2)
ax3 = fig.add_subplot(3,1,3)

ax1.plot(x,y1,color = 'r')  # plot()画出曲线,线颜色为红色
ax2.plot(x,y2,color = 'b')  # 线颜色为蓝色
ax3.plot(x,y1,color = 'g')  # 线颜色为绿色
plt.show() # 显示图像[/code]绘制效果图如下:

[img]http://p.algo2.net/2024/0312/7088b145345b1.jpg[/img]

2 线标记

标记marker            描述
‘o’                 圆圈  
‘.’                 点
‘D’                 菱形  
‘s’                 正方形
‘h’                 六边形1   
‘*’                 星号
‘H’                 六边形2   
‘d’                 小菱形
‘_’                 水平线
‘v’                 一角朝下的三角形
‘8’                 八边形
‘<’                 一角朝左的三角形
‘p’                 五边形
‘>’                 一角朝右的三角形
‘,’                 像素  
‘^’                 一角朝上的三角形
‘+’                 加号  
‘\  ‘               竖线
‘None’,’’,’ ‘       无   
‘x’                 X

下面分别绘制三条曲线,线标记依次为‘o’、‘+’、‘^’。实例如下:[code]import matplotlib.pyplot as plt  # 为方便简介为plt
import numpy as np  # 画图过程中会使用numpy
import pandas as pd  # 画图过程中会使用pandas
#使用numpy产生数据
x = np.arange(-5,5,0.5)  # 定义x数据范围
y1 = x*3  # 定义y1数据范围
y2 = x*x  # 定义y2数据范围
y3 = np.sin(x)

#创建窗口、子图
fig = plt.figure()  # 先创建窗口一个窗口
ax1 = fig.add_subplot(3,1,1)  #通过fig添加子图,参数:行数,列数,第几个。
ax2 = fig.add_subplot(3,1,2)
ax3 = fig.add_subplot(3,1,3)

ax1.plot(x,y1,color = 'r',marker = 'o')  # plot()画出曲线,线颜色为红色,标记为‘o’
ax2.plot(x,y2,color = 'b',marker = '+')  # 线颜色为蓝色,标记为‘+’
ax3.plot(x,y3,color = 'g',marker = '^')  # 线颜色为绿色,标记为‘^’
plt.show() # 显示图像[/code]绘制效果图如下:
[img]http://p.algo2.net/2024/0312/521ff8e5fd983.jpg[/img]

龙听 发表于 2024-3-12 13:15

文本标注

使用 text() 在绘制区域内标注文本。[code]import matplotlib.pyplot as plt  # 为方便简介为plt
import numpy as np  # 画图过程中会使用numpy
import pandas as pd  # 画图过程中会使用pandas
#使用numpy产生数据
x = np.arange(-5,5,1)  # 定义x数据范围
y1 = x*3  # 定义y1数据范围

#创建窗口、子图
fig = plt.figure()  # 先创建窗口一个窗口
ax1 = fig.add_subplot(2,1,1)  #通过fig添加子图,参数:行数,列数,第几个。
ax2 = fig.add_subplot(2,1,2)  
plt.rcParams["font.family"]=["SimHei"]  # 确保图中中文字体正确显示

ax1.plot(x,y1,color = 'r',marker = 'o')  # plot()画出曲线,线颜色为红色
ax2.plot(x,y1,color = 'r',marker = 'o')  # plot()画出曲线,线颜色为红色

for x, y in zip(x, y1):
    ax2.text(x, y + 0.2, '%.2f' % y, ha='center', va='bottom')
        # ha: horizontal alignment水平方向
        # va: vertical alignment垂直方向
ax2.text(2,2,'显示对应点的Y值')  # 在坐标(2,2)处标注'显示对应点的Y值'
plt.show() # 显示图像[/code]实例效果图如下:

注意,通过申明字体,确保图中中文字体正确显示,防止出现乱码。plt.rcParams[“font.family”]=[“SimHei”]

[img]http://p.algo2.net/2024/0312/98e5d9e289d23.jpg[/img]

[b]4 图例[/b]

使用 legend() 显示两条曲线图例。[code]import matplotlib.pyplot as plt  # 为方便简介为plt
import numpy as np  # 画图过程中会使用numpy
import pandas as pd  # 画图过程中会使用pandas

x = np.arange(-5,5,0.1)  # 定义x数据范围
y1 = x*3  # 定义y1数据范围
y2 = x*x  # 定义y2数据范围

plt.rcParams["font.family"]=["SimHei"]  # 确保图中中文字体正确显示

#创建窗口、子图
fig = plt.figure()  # 先创建窗口一个窗口

plt.plot(x,y1)  # plot()画出曲线
plt.plot(x,y2,color = 'red',marker = '*', linestyle = '--')  # 设置曲线颜色、线标记,线样式
plt.legend(labels=['曲线1','曲线2'],loc='best') #best表示自动分配最佳位置
plt.show() # 显示图像[/code]实例效果图如下:
[img]http://p.algo2.net/2024/0312/e77d85c9d9329.jpg[/img]

[b]5 坐标轴[/b]

使用 xlim() 和 ylim() 设置坐标轴范围,使用 xlabel() 和 ylabel() 设置坐标轴名称。[code]import matplotlib.pyplot as plt  # 为方便简介为plt
import numpy as np  # 画图过程中会使用numpy
import pandas as pd  # 画图过程中会使用pandas

x = np.arange(-5,5,0.1)  # 定义x数据范围
y1 = x*3  # 定义y1数据范围
y2 = x*x  # 定义y2数据范围

plt.rcParams["font.family"]=["SimHei"]  # 确保图中中文字体正确显示
plt.rcParams['axes.unicode_minus'] = False  # 确保坐标轴正确显示正负值


#创建窗口、子图
fig = plt.figure()  # 先创建窗口一个窗口

plt.plot(x,y1)  # plot()画出曲线
plt.plot(x,y2,color = 'red',marker = '*', linestyle = '--')  # 设置曲线颜色、线标记,线样式

plt.legend(labels=['曲线1','曲线2'],loc='best') #best表示自动分配最佳位置

plt.xlim((-2,2))
plt.ylim((-2,5))
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

plt.show() # 显示图像[/code]实例效果图如下:
[img]http://p.algo2.net/2024/0312/89828604d552f.jpg[/img]

[b]6 标题[/b]

使用 title() 显示曲线标题。[code]import matplotlib.pyplot as plt  # 为方便简介为plt
import numpy as np  # 画图过程中会使用numpy
import pandas as pd  # 画图过程中会使用pandas

x = np.arange(-5,5,0.1)  # 定义x数据范围
y1 = x*3  # 定义y1数据范围
y2 = x*x  # 定义y2数据范围

plt.rcParams["font.family"]=["SimHei"]  # 确保图中中文字体正确显示

#创建窗口、子图
fig = plt.figure()  # 先创建窗口一个窗口

plt.plot(x,y1)  # plot()画出曲线
plt.plot(x,y2,color = 'red',marker = '*', linestyle = '--')  # 设置曲线颜色、线标记,线样式

plt.legend(labels=['曲线1','曲线2'],loc='best') #best表示自动分配最佳位置
plt.title('XX标题')
plt.show() # 显示图像[/code]实例效果图:
[img]http://p.algo2.net/2024/0312/e77d85c9d9329.jpg[/img]

页: [1]