我试图在mplot3d图中创建一个接触所有轴墙的平面.轴限制使用ax.set_xlim(-6.0,6.0)或设置ax,set_xlim3d(-6.0,6.0).在这两种情况下,墙壁都略微超出规定的限制.使用Poly3DCollection平面绘制平面绘制我的平面但是,它不会触及轴墙.
我正在使用(网格和墙壁的颜色设置作为我的屏幕上的默认颜色,至少看起来很轻,因此模糊了"功能")
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
ax.set_xlim(-6.0, 6.0)
ax.set_ylim(-6.0, 6.0)
ax.set_zlim(-1.0, 1.0)
ax.w_xaxis.set_pane_color((.85, .85, .85, 1.0))
ax.w_yaxis.set_pane_color((.85, .85, .85, 1.0))
ax.w_zaxis.set_pane_color((.85, .85, .85, 1.0))
ax.w_xaxis._axinfo.update({"grid": {"color": (.7, .7, .7, 1)}})
ax.w_yaxis._axinfo.update({"grid": {"color": (.7, .7, .7, 1)}})
ax.w_zaxis._axinfo.update({"grid": {"color": (.7, .7, .7, 1)}})
x = [-6,6,6,-6]
y = [-6,-6,6,6]
z = [0,0,0,0]
verts = [zip(x,y,z)]
collection = Poly3DCollection(verts)
collection.set_color("green")
ax.add_collection3d(collection)
plt.tight_layout() …Run Code Online (Sandbox Code Playgroud) 我想在Z转中绘制一条具有不同颜色的3D线.我使用Visual Studio 2013和Python,我必须读取.json(XML样式)文件并将其绘制(X,Y,Z)到3D图表.所以我得到了一种颜色的曲线:
我希望这样:

我有一个3维numpy数组,但是当我把这段代码写下来时,就像链接的答案一样,所以我收到了一个错误:
'numpy.float64'类型的对象没有len()(VS2013说)
我的代码简称:
matrix_array = [[0,0,0]]
...
-> write data in array
....
matrix_array = np.array(matrix_array)
fig = pyplot.figure()
ax3d = fig.add_subplot(111, projection='3d')
N = len(matrix_array[:,2]) # Z (N now about 14689)
for i in xrange(N-2):
ax3d.plot(matrix_array[i+2,0],matrix_array[i+2,1],matrix_array[i+2,2], color=pyplot.cm.jet(255*i/N))
Run Code Online (Sandbox Code Playgroud)
当我取下值'color',所以我得到了我的蓝色曲线,值为'color'我得到了错误:
'numpy.float64'类型的对象没有len()(VS2013说).
所以我读了matplotlib的API,但我找不到解决方案.
在取消注释该plt.legend()行之前,以下代码段可以正常工作:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = np.linspace(-1, 1)
y = np.linspace(-1, 1)
X, Y = np.meshgrid(x, y)
Z = np.sqrt(X**2 * Y)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, label='h=0')
ax.plot(np.zeros_like(y), y, np.zeros_like(y), label='singular points')
# plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
'Poly3DCollection' object has no attribute '_edgecolors2d'
我以为原因可能是我在2d图中使用了plt.legend()framealpha和frameon参数,但是我重新启动了运行时(我在Google Colab Jupyter Notebook中工作),清除了所有变量,然后问题仍然存在。
是什么导致此错误?
我有一个三维散点图,在其中一个平面上,每个日期绘制2个点.我问过如何在每对点之间绘制一条LINE,并得到了一个我很感激的答案.我现在想要的是画一个BAR或RECTANGLE连接点而不是一条线.
这是目前情节的样子,但我希望它看起来有点像来自matplolib文档的3D条形演示中的情节,除了条形"浮动"而不是固定在轴上.
我尝试过使用Axes3D.bar(如在matplotlib页面上所解释的那样)但它希望我为每个条形提供一个"高度"而不是两个实际坐标,并且该高度将固定在轴上.
这是代码,任何帮助表示赞赏.
import matplotlib.pyplot
from mpl_toolkits.mplot3d import Axes3D
dates = [20020514, 20020515, 20020516, 20020517, 20020520]
highs = [1135, 1158, 1152, 1158, 1163]
lows = [1257, 1253, 1259, 1264, 1252]
upperLimits = [1125.0, 1125.0, 1093.75, 1125.0, 1125.0]
lowerLimits = [1250.0, 1250.0, 1156.25, 1250.0, 1250.0]
zaxisvalues0= [0, 0, 0, 0, 0]
zaxisvalues1= [1, 1, 1, 1, 1]
zaxisvalues2= [2, 2, 2, 2, 2]
fig = matplotlib.pyplot.figure()
ax = fig.add_subplot(111, projection = …Run Code Online (Sandbox Code Playgroud) 我有一些与使用 mplot3D 在 Python 中创建简单线图相关的问题,其中填充了图下方的区域。我在 RedHatEnterprise 7.2、matplotlib 1.2.0 和 numpy 1.7.2 上使用 Python 2.7.5。
使用下面的代码,我可以生成线图。这按预期显示,绘图的开始/结束由导入的数据集的限制设置。
然后,我尝试使用 Bart 从Plotting a series of 2D plots in a perspectival way 中给出的答案填充线图和 -0.1 之间的区域。然而,这是有效的,填充区域继续超出数据集的限制。从链接运行示例时也是如此。
代码如下:
from numpy import *
import matplotlib.pylab as plt
from mpl_toolkits.mplot3d import Axes3D
x,y = genfromtxt("data.dat",unpack=True)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.add_collection3d(plt.fill_between(x,y,-0.1, color='orange', alpha=0.3,label="filled plot"),1, zdir='y')
ax.plot(x,y,1,zdir="y",label="line plot")
ax.legend()
ax.set_xlim3d(852.353,852.359)
ax.set_zlim3d(-0.1,5)
ax.set_ylim3d(0,2)
ax.get_xaxis().get_major_formatter().set_useOffset(False)
plt.show()
Run Code Online (Sandbox Code Playgroud) 我正在尝试改变 3D 散点图的视角。(朱莉娅语言)
例如,此代码更改了视角,但每次更改时都会单独绘制这些点,而不是一起绘制。
for i=1:10
X=i; Y=i+2; Z = i+3
fig = figure()
ax = gca(projection="3d")
plot3D([X],[Y],[Z], ".")
ax[:view_init](30, 180)
end
Run Code Online (Sandbox Code Playgroud)
我该如何写这篇文章,以便我以不同的视角看待所有要点?Julia 中的格式改编自 matplotlib,因此它应该与 Julia 中的格式非常相似。
我正在尝试使用facecolors. 这里的问题是 cm.ScalarMappable 规范化V了颜色的表面plt.cm.jet而不规范化,所以颜色和颜色条不匹配。我已经手动尝试标准化V(即V_normalized),但结果仍然不太正确。事实上,最高值V应该在表面的一个角落,但这在实践中并没有体现在图像中。如何绘制确保在表面上具有正确的颜色?
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
# Create data.
X = np.array([[ 50, 100, 150, 200, 250, 300, 350, 400, 450, 500],
[ 50, 100, 150, 200, 250, 300, 350, 400, 450, 500],
[ 50, 100, 150, 200, 250, 300, 350, 400, 450, 500],
[ 50, 100, 150, 200, 250, …Run Code Online (Sandbox Code Playgroud) 我正在尝试绘制一个像这样的 3D 图表:
使用此代码并收到一条错误消息:
line 1621, in plot_surface
if Z.ndim != 2:
AttributeError: 'list' object has no attribute 'ndim'
Run Code Online (Sandbox Code Playgroud)
import cobra
import os
from os.path import join
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
data_dir ='/Users/stephenchapman/Documents/research/FBA_algae_digesate/COBRApy/iCZ843/iCZ843_models'
model = cobra.io.read_sbml_model(join(data_dir, "iCZ843_hetero.xml"))
model.reactions[15].upper_bound = -0 #ammonia
model.reactions[15].lower_bound = -98.3
model.reactions[27].upper_bound = -0 #acetate
model.reactions[27].lower_bound = -3.3
model.reactions[14].upper_bound = -0 #phosphate
model.reactions[14].lower_bound = -10
model.reactions[16].upper_bound = -0 #nitrate
model.reactions[16].lower_bound = -30.3
model.reactions[20].upper_bound = -0 …Run Code Online (Sandbox Code Playgroud) 我有以下代码和它生成的图。我的目标是在第二个图(右)上绘制红色平面上的一维高斯分布。
这样做的目的是表明重叠(代表条件)是高斯分布。我对正确分布的确切方差不感兴趣,而只是直观地显示它。
在python中有什么直接的方法可以做到这一点吗?
谢谢,P
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.mlab import bivariate_normal
from mpl_toolkits.mplot3d import Axes3D
#Make a 3D plot
fig = plt.figure(figsize=plt.figaspect(0.5))
################ First Plot ##############
#Parameters to set
mu_x = 0
sigma_x = np.sqrt(5)
mu_y = 0
sigma_y = np.sqrt(5)
#Create grid and multivariate normal
x = np.linspace(-10,10,500)
y = np.linspace(-10,10,500)
X, Y = np.meshgrid(x,y)
Z = bivariate_normal(X,Y,sigma_x,sigma_y,mu_x,mu_y)
# Create plane
x_p = 2
y_p = np.linspace(-10,10,500)
z_p = np.linspace(0,0.02,500)
Y_p, Z_p = np.meshgrid(y_p, …Run Code Online (Sandbox Code Playgroud) 我想从 3D 场景中删除边框,如下所述。知道该怎么做吗?
这里是生成当前场景的代码:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# Create figure
plt.style.use('dark_background') # Dark theme
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# Make panes transparent
ax.xaxis.pane.fill = False # Left pane
ax.yaxis.pane.fill = False # Right pane
# Remove grid lines
ax.grid(False)
# Remove tick labels
ax.set_xticklabels([])
ax.set_yticklabels([])
ax.set_zticklabels([])
# Print chart
file_path = 'charts/3d.png'
fig.savefig(file_path, bbox_inches='tight', pad_inches=0.05, transparent=True)
Run Code Online (Sandbox Code Playgroud) matplotlib ×10
mplot3d ×10
python ×8
3d ×1
gaussian ×1
julia ×1
numpy ×1
plot ×1
python-3.x ×1