python - 为什么我不能在我的桌面上用 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')
解决方案
为了使用3d
投影,matplotlib <= 3.1
您需要导入axes3d
,即
from mpl_toolkits.mplot3d import Axes3D
从matplotlib >= 3.2
,不需要额外的导入。因此,您可能在两台计算机上运行不同的 matplotlib 版本。
如果您在 iPython 内核(例如 Jupyter notebook)中运行代码,那么您只需要执行一次导入,您就可以运行任何依赖于所述导入的代码,直到内核关闭。但是,为了以独立的方式运行脚本,您需要在脚本中包含该导入。
推荐阅读
- language-agnostic - 为什么特定语言的程序经常用它们设计的相同语言编写?
- scala - 当列中并非所有值都存在时,是否可以对 Spark 的数据框进行分组?
- c# - 为什么 DocumentDbBotDataStore 不会导致死锁?
- java - 如何在 Hibernate 中映射中间表
- microsoft-graph-api - 创建新的 O365 订阅时查询参数请求无效
- java - 连接超时:在 Gradle 中连接
- php - 数据库中的 PHP time() 值不正确
- azure - 在 Azure 逻辑应用程序中,我可以有多个起点(HTTP 触发器)
- c++ - 如何调用具有不同字符串起点的函数?
- javascript - 没有 servlet 或 struts 的 Ajax 中的 Java 类调用