juq*_*uqa 5 python plot matplotlib
我有非常复杂的3D数据,我想用matplotlib绘制.为了能够更好地理解,我想在不同的子图上绘制相同的数据view_init,每个图中只有不同的数据.目前,我的代码看起来很像:
fig = plt.figure()
views = [(0, 0), (90, 0), (0, 90)]
for i (elev, azim) in enumerate(views):
ax = fig.add_subplot(1, 3, i+1, projection='3d')
plot_heavy_data(ax) # expensive call
ax.view_init(elev, azim)
Run Code Online (Sandbox Code Playgroud)
然而,我的召唤plot_heavy_data是相当昂贵的,我想知道是否有一种方法只是"复制"一个子情节并通过改变视图方向来绘制它,但保持其他一切相同.这样我只会做一次昂贵的操作,而不是重复3次.
澄清:
该功能plot_heavy_data仅绘制到子图,如下所示:
def plot_heavy_data(ax):
ax.scatter(*data) # data is huge
Run Code Online (Sandbox Code Playgroud)
我想避免多次调用此函数.
以下是一个最小的工作样本,我只想调用该plot函数一次.
import matplotlib.pyplot as plt
import numpy as np
def plot(ax, data):
# ideally only call this function once
ax.scatter(*data)
data = np.random.random((2, 20))
fig = plt.figure(figsize=(12, 4))
for i in range(3):
ax = fig.add_subplot(1, 3, i+1)
plot(ax, data)
ax.set_xlim([0, i+1]) # do 'some' manipulation on ax
plt.show()
Run Code Online (Sandbox Code Playgroud)