首页 > 解决方案 > 为什么我不能在我的桌面上用 Python 创建一个 3d 散点图?

问题描述

我正在尝试在 python 中使用 3D 散点图对象。我已经在我的笔记本电脑上成功地做到了这一点。但是,我无法将代码复制并粘贴到我的桌面上。当我这样做时,我得到一个错误。我将在下面附上我的代码部分,这给我带来了麻烦。我正在使用 Anaconda 来运行我的代码。我会注意到我的笔记本电脑使用 python 3.6 而我的台式机使用 3.7,但我不认为这是导致它的原因。我得到的错误如下。“ValueError:未知投影'3d'”

import numpy as np
from scipy import optimize
import time
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
import pandas as pd
from sklearn import preprocessing
from sklearn.svm import SVR
import multiprocessing as mp
from obj_class import objective_class
import pdb
import scipy.integrate as integrate

def create3d():
    grid_matrix = np.array([[1,1,1,1],[2,2,2,2],[3,3,3,3]])

    fig = plt.figure()
    ax = plt.axes(projection='3d')
    p = ax.scatter3D(grid_matrix[:,0],grid_matrix[:,1] ,grid_matrix[:,2] , c=grid_matrix[:,3], cmap='viridis')
    cb = fig.colorbar(p) 
    ax.set_xlabel('X')
    ax.set_ylabel('Y')
    ax.set_zlabel('Z')
    ax.set_title(' Scatter Plot')

标签: pythonmatplotlibanacondadata-science

解决方案


为了使用3d投影,matplotlib <= 3.1您需要导入axes3d,即

from mpl_toolkits.mplot3d import Axes3D

matplotlib >= 3.2,不需要额外的导入。因此,您可能在两台计算机上运行不同的 matplotlib 版本。

如果您在 iPython 内核(例如 Jupyter notebook)中运行代码,那么您只需要执行一次导入,您就可以运行任何依赖于所述导入的代码,直到内核关闭。但是,为了以独立的方式运行脚本,您需要在脚本中包含该导入。


推荐阅读