matplotlib表示连续函数图形用plot()函数,表示离散函数图形用scatter()函数。

这2个函数适用二维作图,也适用三维作图。

绘制二维图及三维图重点思维:

无论你绘制二维或是三维,你均可利用函数y=f(x)或z=f(x,y),即

你需要找到自变量与应变量,二维图就需找x,y;三维图就需找x,y,z

然而作图并不能给连续自变量与因变量,以二维图来说,你需要给自变量x

一个离散列表,同时给因变量y一个对应列表,尽管是离散,但借助函数plot可以

将其光滑,给出连续图形,借助scatter可以给出对应离散点。

 

 

 

 

二维作图代码:

import math
import matplotlib.pyplot as plt
x=[float(i) for i in range(1,300)]
y=[math.log(i) for i in x]
plt.grid()  # 打开网格
plt.plot(x,y,c='r', linewidth=3, label='log Curve')    # 绘制坐标为(x,y)的直线,label='log Curve'为直线的名称
a=[x[20],x[175]]
b=[y[20],y[175]]
plt.plot(a, b, c='g', marker='*',markersize=15,alpha=0.75,label='line-wire')  # 绘制坐标为(a,b)的直线
plt.legend(loc='upper left')  # 显示图标在左上角
plt.xlabel('x')  # 设置x坐标名称
plt.ylabel('log(x)')  # 设置y坐标名称
plt.show()




结果如图:

matplotlib的二维作图及三维作图 ax.plot_wireframe, scatter_ide

 

 

 

# 三维作图

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = np.random.randint(0,20,(20),np.int32)
y = np.random.randint(0,20,(20),np.int32)
z = np.random.randint(0,20,(20,20),np.int32)
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_wireframe(x,y,z,cstride=1,rstride=1,color='red')  # 线框图
plt.show()


# 绘制一个散点图
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
xs = np.random.randint(2, 50, (100), np.int32)
ys = np.random.randint(20,70 , (100), np.int32)
zs = np.random.randint(21, 100, (100),np.int32)
ax.scatter(xs, ys, zs, c='r', marker='o')# xs, ys, zs可以为浮点数

ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()

matplotlib的二维作图及三维作图 ax.plot_wireframe, scatter_二维_02