python - matplotlib 3D 图上令人困扰的框架
问题描述
我用 matplotlib 制作 3d 图,我总是得到一个奇怪的框架,在我的图周围有一个标准化的比例。它来自哪里,我该如何摆脱它?
这是一个让我遇到问题的示例代码:
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
x = np.linspace(0,10)
y = np.linspace(0,10)
z = np.linspace(0,10)
# ------------- Figure ---------------
fig, ax = plt.subplots(figsize = (9,6))
ax = fig.gca(projection='3d')
ax.plot(np.sin(x), np.cos(y), z)
plt.show()
我使用它plt.subplots()
是因为我想要一个 3D 和 2D 并排的图形。
解决方案
plt.subplots(...)
当然,在Matplotlib 被告知您需要启用 3D 的轴之前,您调用它会实例化一个完整的轴,包括水平和垂直脊柱。
当你稍后打电话plt.gca(...)
时为时已晚......</p>
只需使用
fig, ax = plt.subplots(figsize = (9,6), subplot_kw={"projection" : "3d"})
或者
fig = plt.figure(figsize = (9,6))
ax = fig.add_subplot(111, projection='3d')
解决 OP 的评论
Figure.add_subplot
非常灵活……</p>
fig = plt.figure()
fig.add_subplot(1,5,(1,4), projection='3d')
fig.add_subplot(1,5,5)
fig.tight_layout()
plt.show()
推荐阅读
- python - 将 Pandas 数据帧转换为 PyTorch 张量?
- c++ - 如何在 C++ 中生成一个从 0 到 N 的 size_t 包,其中 N 在编译时已知
- java - Java JTable 无法加载
- java - 如何(反)序列化棋盘游戏中改变游戏规则的卡片行为?
- sql - xQuery 函数返回值未显示
- angularjs - Bower 错误:无法加载资源:net::ERR_FILE_NOT_FOUND
- python - 在列表理解中使用具有多个参数的基于 len() 的条件的大多数 Pythonic 方式
- java - 带有最小 jar 的 Tomcat
- javascript - 如何将此表从最大到最小排序?
- gcc - 什么是 GCC 工具链?