在我的 matplotlib 图的轴之外添加一个图像

用户1551817

我第一次使用 matplot lib 制作 3d 图。

我创建了这个情节:

在此处输入图片说明

使用此代码:

fig = plt.figure(figsize=(10, 10))
ax = plt.axes(projection="3d")

idx = 14

#origin

ax.scatter([0],[0],[0],s=200,marker='+',color='k')

#object1

ax.scatter(object1_z[idx],object1_ra[idx],object1_dec[idx], s=100, color='r',marker='o')

#cross1

ax.scatter(cross1_position[2],cross1_position[0],cross1_position[1], s=400, color='b',marker='X')

#b_hat

ax.quiver(cross1_position[2],cross1_position[0],cross1_position[1],b_hat_z[idx],b_hat_ra[idx],b_hat_dec[idx],arrow_length_ratio=0.1,lw=2,color='b')

#k_hat

ax.quiver(object1_z[idx],object1_ra[idx],object1_dec[idx],1,0,0,arrow_length_ratio=0.1,lw=2,color='b')

#axis

ax.quiver(cross1_position[2]+(0.05*(cross1_position[2]-axis[2])),cross1_position[0]+(0.05*(cross1_position[0]-axis[0])),cross1_position[1]+(0.05*(cross1_position[1]-axis[1])),axis[2],axis[0],axis[1],arrow_length_ratio=0.1,color='r',pivot='tip')
ax.quiver(cross1_position[2]-(0.05*(cross1_position[2]-axis[2])),cross1_position[0]-(0.05*(cross1_position[0]-axis[0])),cross1_position[1]-(0.05*(cross1_position[1]-axis[1])),-axis[2],-axis[0],-axis[1],arrow_length_ratio=0.1,color='r',pivot='tip')

#joining lines

ax.plot([cross1_position[2],object1_z[idx]],[cross1_position[0],object1_ra[idx]],[cross1_position[1],object1_dec[idx]],linestyle='--',color='k',lw=2)
ax.plot([cross1_position[2],53],[cross1_position[0],0],[cross1_position[1],0],linestyle='--',color='k',lw=2)
ax.plot([object1_z[idx],53],[object1_ra[idx],0],[object1_dec[idx],0],linestyle='--',color='k',lw=2)

# sphere

u = np.linspace(0, 2*np.pi, 100)
v = np.linspace(0, np.pi, 100)

x = np.outer(np.cos(u),np.sin(v))
y = np.outer(np.sin(u),np.sin(v))
z = np.outer(np.ones(np.size(u)),np.cos(v))
ax.plot_surface(x,y,z,rstride=4,cstride=4, color='r',alpha=0.1,facecolors=plt.cm.gray(z))



ax.set_xlabel('z')
ax.set_ylabel('x')
ax.set_zlabel('y')

ax.set_xlim(-1.3,1.3)
ax.set_ylim(-1.3,1.3)
ax.set_zlim(-1.3,1.3)

plt.show()

我想在以下位置放置另一个球体,远离第一组轴:

在此处输入图片说明

我的问题:

我可以使用我现有的轴来做到这一点吗?如果我尝试使用坐标(例如 (x=0, y=0, z=5))将我的第二个球体放在我想要的位置,那么这不会给我想要的东西,因为它挤压了我现有的图像(沿 z 轴)。

我是否需要添加第二组隐形轴或类似的东西?

总结:在上图中的“HERE”位置放置图像的好方法是什么。

r-初学者

我做了很多研究,但我找不到一种方法来添加只有 3D 图形的图像。所以我使用了subplots,它是一个3D+2D图形,基于官方参考。不幸的是,图形的右侧被设置为 3D 图形的中心并且无法移动。这不是您要寻找的答案,但您可能会发现它很有用。

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.patches as patches
import matplotlib.cbook as cbook

fig = plt.figure(figsize=(18,9))


test_img = '/Users/youraccount/Documents/Python/stackoverflow/logo-the-overflow.png'
with cbook.get_sample_data(test_img) as image_file:
    image = plt.imread(image_file)

# Make data
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = 10 * np.outer(np.cos(u), np.sin(v))
y = 10 * np.outer(np.sin(u), np.sin(v))
z = 10 * np.outer(np.ones(np.size(u)), np.cos(v))

ax = fig.add_subplot(121, projection='3d')
# Plot the surface
ax.plot_surface(x, y, z)

# Placement 0, 0 would be the bottom left, 1, 1 would be the top right.
ax.text2D(1.5, 0.3, "2D Text", transform=ax.transAxes, fontsize=24)

ax = fig.add_subplot(122)
im = ax.imshow(image)
patch = patches.Rectangle(xy=(1.0, -0.5), width=708, height=144, transform=ax.transData)
im.set_clip_path(patch)
ax.axis('off')

plt.show()

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我如何在 matplotlib 中的轴旁边有一个栏?

当我添加第二个图时,Matplotlib 会展平两个图中的第一个吗?

Matplotlib图以图像作为一个numpy数组

Python-MatPlotLib-如何在我的x轴上设置两个刻度,一个在最左边,另一个在最右边?

matplotlib 将子图组合成一个没有轴和间隙的图

我如何隐藏matplotlib.quiver()的轴

我无法在matplotlib中关闭绘图的轴

加快我的交互式matplotlib图

当我在matplotlib中执行多个子图时,我的轴上会显示额外的数字

为什么我执行“ log”操作时,我的matplotlib条形图会压缩x轴

matplotlib没有在条形图的x轴上显示第一个标签

Matplotlib共享y轴-一个子图未对齐

如何在一个matplotlib轴中集成子图?

使用 matplotlib 显示多个 y 轴脊时减少一个子图的宽度

Matplotlib 返回一个空白图

如何将matplotlib-basemap轴的长度与另一个子图轴相等?

Matplotlib:如何绘制两个具有相同x / y轴但一个沿y轴从另一个开始的条形图

如何刷新Matplotlib图的轴图像

如果我在 matplotlib 中有数字(或轴)列表,如何创建多个图?

Matplotlib:如何绘制一个x值的一维数组,其中y轴与热图相对应?

如果第一个值是 np.nan,则 Matplotlib 不会绘制我的 numpy 数组

我如何在 matplotlib 中获得一个动画图形?

matplotlib:为什么我的Y轴会变形?

如何在matplotlib中更改我的x轴范围

为什么我的matplotlib图的图例总是被裁剪?

Matplotlib:我怎么知道正在使用哪个颜色图?

我不知道如何制作新的matplotlib图

黑色条覆盖了我的x标签,用于matplotlib图?

为什么我的Matplotlib子图的大小不同?