【问题标题】:How to hold plot figures in Python如何在 Python 中保存绘图图形
【发布时间】:2020-06-02 11:09:26
【问题描述】:

我有这段代码,其中 c_X,c_Y,c_Z,X,Y,Z X_2,Y_2,Z_2,X_4,Y_4,Z_4 是点列表(我的数据)。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

for i in range (2):

    fig = plt.figure(i)
    ax = fig.add_subplot(111, projection='3d')

    ax.scatter(c_X,c_Y,c_Z, color = 'midnightblue')
    ax.scatter(X, Y, Z, color = 'mediumaquamarine')
    ax.scatter(X_2,Y_2,Z_2, color = 'cadetblue')
    ax.scatter(X_4,Y_4,Z_4, color = 'cadetblue')
    ax.set_xlabel('x')
    ax.set_ylabel('y')
    ax.set_zlabel('z')
    plt.draw()

我到底如何才能持有或获得 3 个不同数字的 3 个地块?

【问题讨论】:

  • 尝试将plt.draw()的缩进减少一级,并可能将其更改为plt.plot()

标签: python matplotlib plot figure


【解决方案1】:

按照问题的 cmets 中的建议修改您的代码。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

for i in range (2):

    fig = plt.figure(i)
    ax = fig.add_subplot(111, projection='3d')

    ax.scatter(c_X,c_Y,c_Z, color = 'midnightblue')
    ax.scatter(X, Y, Z, color = 'mediumaquamarine')
    ax.scatter(X_2,Y_2,Z_2, color = 'cadetblue')
    ax.scatter(X_4,Y_4,Z_4, color = 'cadetblue')
    ax.set_xlabel('x')
    ax.set_ylabel('y')
    ax.set_zlabel('z')
plt.show()

我认为这可以满足您的需求。

【讨论】:

    【解决方案2】:

    如果你只有 4 个数字,你可以使用:

    fig = plt.figure()
    ax = Axes3D(fig)
    ax.scatter(c_X,c_Y,c_Z, color = 'midnightblue')
    ax.set_xlabel('x')
    ax.set_ylabel('y')
    ax.set_zlabel('z')
    plt.show()
    
    fig = plt.figure()
    ax = Axes3D(fig)
    ax.scatter(X, Y, Z, color = 'mediumaquamarine')
    ax.set_xlabel('x')
    ax.set_ylabel('y')
    ax.set_zlabel('z')
    plt.show()
    
    fig = plt.figure()
    ax = Axes3D(fig)
    ax.scatter(X_2,Y_2,Z_2, color = 'cadetblue')
    ax.set_xlabel('x')
    ax.set_ylabel('y')
    ax.set_zlabel('z')
    plt.show()
    
    fig = plt.figure()
    ax = Axes3D(fig)
    ax.scatter(X_4,Y_4,Z_4, color = 'cadetblue')
    ax.set_xlabel('x')
    ax.set_ylabel('y')
    ax.set_zlabel('z')
    plt.show()
    

    这样有效吗?

    或者您可以将数组合并为一个用于 X,一个用于 Y,一个用于 Z。为颜色创建一个列表并使用循环:

    c = ['color1', 'color2', etc]
    
    for i in range(k):
        plt.figure()
        ax = Axes3D(fig)
        ax.scatter(X[i], Y[i], Z[i], color=c[i])
        plt.show()
    

    【讨论】:

    • 这不是我想要重现的。我希望将这些列表放在一个图表中,并且我已经有了它们。问题是我基本上想用所有列表中的所有点重复图表 3 次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2022-01-06
    • 2013-07-02
    相关资源
    最近更新 更多