欢迎转载,转载请注明出处
环境:python3
安装:pip install matplotlib
二维图形——直线
import matplotlib.pyplot as plt
import numpy as np
X = np.linspace(-10, 10, 100) # [-10, 10]这个区间里,生成100个点,包括-10和10在内
Y = 2 * X + 1
plt.figure() # 每个图形都有一个figure窗口,都会显示在这个figure中,可以定义多个figure,后边会介绍
plt.plot(X, Y, color='red')
plt.show()
直线
三维图形
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D # 绘制三维图形,需要引入matplotlib的3D包
X = np.linspace(-10, 10)
Y = np.linspace(-10, 10)
X, Y = np.meshgrid(X, Y)
Z = np.sqrt(X**2 + Y**2)
fig = plt.figure() # 生成一个figure,figure是用来显示二维图形的,三维图形需要投影到二维屏幕上才能显示
ax = Axes3D(fig)
ax.plot_surface(X, Y, Z, cmap='rainbow') # cmap是color map的意思,后边会介绍
plt.show()
三维图形
同时显示多个图形
一个figure就是一个图形窗口,前边的两个例子,都只创建了一个figure,如果要显示多个图形,一种方法是创建多个figure,另一种是在一个figure中显示多个小图。
多个figure的例子:
import matplotlib.pyplot as plt
import numpy as np
X = np.linspace(-10, 10, 100) # [-10, 10]这个区间里,生成100个点,包括-10和10在内
Y0 = np.sin(X)
Y1 = X**2
Y2 = 2 * X + 5
plt.figure() # 第一个figure
plt.plot(X, Y0, color='b')
plt.figure() # 第二个figure
plt.plot(X, Y1, color='g')
plt.plot(X, Y2, color='r')
plt.show()
第一个figure
第二个figure
多个小图的例子:
import matplotlib.pyplot as plt
import numpy as np
X = np.linspace(-10, 10, 100) # [-10, 10]这个区间里,生成100个点,包括-10和10在内
Y0 = np.sin(X)
Y1 = X**2
Y2 = np.tan(X)
plt.figure() # 一个figure
plt.subplot(2, 2, 1) # 将figure分成2x2四个子图,1表示在第一个子图里作图
plt.plot(X, Y0, color='b')
plt.subplot(2, 2, 2) # 在2x2四个子图的第二个子图里作图
plt.plot(X, Y1, color='g')
plt.subplot(223) # 另一种表示法,在第三个子图里作图
plt.plot(X, Y2, color='r')
plt.subplot(224) # 在第四个子图里作图
plt.plot([0, 1], [0, 1]) # 两个列表对应的坐标点的关系:[x0, x1], [y0, y1]
plt.show()
四个小图
以上四个例子可以解决大部分的需求了,下面介绍更多的细节来美化图形。
线型、颜色
import matplotlib.pyplot as plt
import numpy as np
X = np.linspace(-100, 100, 100) #
Y0 = -X**2
Y1 = X**2
plt.figure()
plt.plot(X, Y0, color='r', linewidth=1.5, linestyle='--')
plt.plot(X, Y1, color='b', linewidth=5.5, linestyle='-.', alpha=.4)
plt.show()
线型、颜色
横纵坐标标签
import matplotlib.pyplot as plt
import numpy as np
X = np.linspace(-100, 100, 100) #
Y0 = -X**2
Y1 = X**2
plt.figure()
plt.plot(X, Y0, color='r', linewidth=1.5, linestyle='--')
plt.plot(X, Y1, color='b', linewidth=2.5, linestyle='-.')
plt.xlabel('X Label', color='b', size=14) # 横坐标标签,并设置颜色,尺寸大小
plt.ylabel('Y Label', color='r', size=14) # 纵坐标标签
plt.show()
坐标标签
横纵坐标显示范围
import matplotlib.pyplot as plt
import numpy as np
X = np.linspace(-100, 100, 100) #
Y0 = -X**2
Y1 = X**2
plt.figure()
plt.plot(X, Y0, color='r', linewidth=1.5, linestyle='--')
plt.plot(X, Y1, color='b', linewidth=2.5, linestyle='-.')
plt.xlabel('X Label', color='b', size=14) # 横坐标标签,并设置颜色,尺寸大小
plt.ylabel('Y Label', color='r', size=14) # 纵坐标标签
plt.xlim([-30, 30]) # 横坐标显示范围
plt.ylim([-100, 100]) # 纵坐标显示范围
plt.show()
坐标范围
坐标轴位置、定制坐标刻度
import matplotlib.pyplot as plt
import numpy as np
X = np.linspace(-100, 100, 100) #
Y0 = -X**2
Y1 = X**2
plt.figure()
plt.plot(X, Y0, color='r', linewidth=1.5, linestyle='--')
plt.plot(X, Y1, color='b', linewidth=2.5, linestyle='-.')
plt.xlabel('X Label', color='b', size=14) # 横坐标标签,并设置颜色,尺寸大小
plt.ylabel('Y Label', color='g', size=14) # 纵坐标标签
plt.xlim([-30, 30]) # 横坐标显示范围
plt.ylim([-100, 100]) # 纵坐标显示范围
## 坐标轴位置
axis = plt.gca() # get current axis
axis.spines['top'].set_color('none') # 将右边和顶部的边框颜色去掉
axis.spines['right'].set_color('none')
axis.spines['bottom'].set_position(['data', 0]) # 将下部和左边的边框设置到0位置
axis.spines['left'].set_position(['data', 0])
axis.xaxis.set_ticks_position('bottom') # 将x坐标、y坐标轴绑定到下边框、左边框
axis.yaxis.set_ticks_position('left')
## 定制化坐标刻度
plt.xticks([-30, -10, 10, 30], # 每个刻度值一一对应一个字符串
['A30', 'A10', 'B10', 'B30'], color='y')
plt.show()
坐标轴、坐标刻度
图例
import matplotlib.pyplot as plt
import numpy as np
X = np.linspace(-100, 100, 100) #
Y0 = -X**2
Y1 = X**2
plt.figure()
line0, = plt.plot(X, Y0, color='r', linewidth=1.5, linestyle='--')
line1, = plt.plot(X, Y1, color='b', linewidth=2.5, linestyle='-.')
## 添加图例
plt.legend(handles=[line0, line1], labels=['line0', 'line1'], loc='best')
plt.xlabel('X Label', color='b', size=14) # 横坐标标签,并设置颜色,尺寸大小
plt.ylabel('Y Label', color='g', size=14) # 纵坐标标签
plt.xlim([-30, 30]) # 横坐标显示范围
plt.ylim([-100, 100]) # 纵坐标显示范围
## 坐标轴位置
axis = plt.gca() # get current axis
axis.spines['top'].set_color('none') # 将右边和顶部的边框颜色去掉
axis.spines['right'].set_color('none')
axis.spines['bottom'].set_position(['data', 0]) # 将下部和左边的边框设置到0位置
axis.spines['left'].set_position(['data', 0])
axis.xaxis.set_ticks_position('bottom') # 将x坐标、y坐标轴绑定到下边框、左边框
axis.yaxis.set_ticks_position('left')
## 定制化坐标刻度
plt.xticks([-30, -10, 10, 30], # 每个刻度值一一对应一个字符串
['A30', 'A10', 'B10', 'B30'], color='y')
plt.show()
图例
网友评论