Plot 如何在mathematica中将分子几何包含到3D绘图中?

Plot 如何在mathematica中将分子几何包含到3D绘图中?,plot,geometry,wolfram-mathematica,combinations,Plot,Geometry,Wolfram Mathematica,Combinations,我正在用Mathematica制作一个ListPlot3D,其中能量(z)取决于分子参数(x,y)。首先,我导入数据(x、y、z形式的2个能量曲面): 然后可视化图形: Show[ ListPlot3D[{data}, PlotRange -> {9, 14}, Mesh -> None, ColorFunction ->ColorData["Rainbow"], AlignmentPoint -> Center, ViewPoint -> {2, -2, 2}

我正在用Mathematica制作一个ListPlot3D,其中能量(z)取决于分子参数(x,y)。首先,我导入数据(x、y、z形式的2个能量曲面):

然后可视化图形:

Show[
ListPlot3D[{data}, PlotRange -> {9, 14}, Mesh -> None, 
ColorFunction ->ColorData["Rainbow"], 
AlignmentPoint -> Center, ViewPoint -> {2, -2, 2},
ViewVertical -> {0, 0, 1}, BoxRatios -> {3, 3, 1}, FaceGrids -> {{-1, 0, 0}, {0, 1, 0}},  
PlotLegends -> Placed[BarLegend[{"Rainbow", {9, 14}},
LabelStyle -> {Black, FontSize -> 16,FontFamily -> "Helvetica"}],After],
AxesEdge -> {{-1, -1}, {+1, -1}, {+1, +1}}, LabelStyle -> Directive[Black],
AxesLabel -> {"N-N/A", "Hydrogen bond lenght/A", "Energy/eV"},
AxesStyle ->Directive[Black, FontSize -> 16, FontFamily -> "Times"]],

ListPlot3D[{data2}, PlotStyle -> Opacity[0.4], PlotRange -> {9, 14}, 
Mesh -> None, ColorFunction -> ColorData["DarkRainbow"]],

Graphics3D[{Red, AbsolutePointSize[10],Point[{3.23, 2.28, 10.12}]}].
Graphics3D[{Red, AbsolutePointSize[10],Point[{3.23, 1.7, 11.05}]}],
Graphics3D[{Red, AbsolutePointSize[10],Point[{3.23, 1.05, 9.6}]}],

AspectRatio -> 1/GoldenRatio, Boxed -> False, ImageSize -> 900]
这就给了我:

一切正常。但是我想包括分子的图片而不是红点,所以它看起来像这样:

我知道可以从.xyz或.pdb或.mol加载分子几何体。档案

Import["D:\2dscan\mrci\1.mol", "Rendering" -> "BallAndStick"]
但是如何将这些对象包含到绘图中呢

我知道我可以在一些带有透明背景的png图片的图形编辑器中实现这一点,但我仍然更喜欢Mathematica解决方案。
问题是,因为我是一个经验非常少的用户,仅仅是初学者,我不知道如何将分子几何体转换成3D对象,这样就可以和绘图结合起来。任何建议都将不胜感激。谢谢。

奇怪的是,你不能将一个图形插入另一个图形。 下面是一个使用图形转换在
列表图中定位Graphics3D对象的示例:

g = Graphics3D[{{Red, Sphere[{0, 0, 0}, 1]},
    {Blue, Sphere[{3, 0, 0}, 1.5]},
    {Black, Cylinder[{{0, 0, 0}, {3, 0, 0}}, 1/4]}}];
Show[{
  ListPlot3D[
   Flatten[Table[ {x, y, Sin[x] Cos[y]} , {x, -2, 2, .1}, {y, -2, 
      2, .1}], 1]],
  Graphics3D[
     (Translate[#, {-1, -1, -.75}] &)@*
     (Rotate[#, Pi/4, {0, 1, 0}, {0, 0, 0}] &)@*
     (Scale[#, .1, {0, 0, 0}] & )@*
     (Translate[#, {-3/2, 0, 0}] &) @First@g]}, PlotRange -> All]

注意,
@*
符号是相当新的,对于较旧的mathematica版本,使用
组合

参考:
奇怪的是,你不能将一个图形插入另一个图形。 下面是一个使用图形转换在
列表图中定位Graphics3D对象的示例:

g = Graphics3D[{{Red, Sphere[{0, 0, 0}, 1]},
    {Blue, Sphere[{3, 0, 0}, 1.5]},
    {Black, Cylinder[{{0, 0, 0}, {3, 0, 0}}, 1/4]}}];
Show[{
  ListPlot3D[
   Flatten[Table[ {x, y, Sin[x] Cos[y]} , {x, -2, 2, .1}, {y, -2, 
      2, .1}], 1]],
  Graphics3D[
     (Translate[#, {-1, -1, -.75}] &)@*
     (Rotate[#, Pi/4, {0, 1, 0}, {0, 0, 0}] &)@*
     (Scale[#, .1, {0, 0, 0}] & )@*
     (Translate[#, {-3/2, 0, 0}] &) @First@g]}, PlotRange -> All]

注意,
@*
符号是相当新的,对于较旧的mathematica版本,使用
组合

参考:

查看
插图
。导入
的结果是什么形式的?(Do
Head@Import[]如果不确定,请查看
插图
。导入
的结果是什么形式的?(Do
Head@Import[]
如果不确定)