Wolfram mathematica Mathematica重复使用另一个绘图的颜色函数

Wolfram mathematica Mathematica重复使用另一个绘图的颜色函数,wolfram-mathematica,Wolfram Mathematica,我非常感谢你在我的问题上的帮助。 在绘制数据2时,我想使用与应用于数据1的绘图相同的颜色函数。 例如: data1={{1,0,0},{0,1,0},{0,0,1} ListPointPlot3D[data1,PlotStyle->PointSize[0.02], 颜色函数->函数[{x,y,z},RGBColor[x,y,z]] 接下来,我希望以相同的顺序使用前面的颜色绘制另一个数据(相同尺寸)(有一个未知函数将数据1转换为数据2): data2={{1,1,0},{1,0,1},{0,1,

我非常感谢你在我的问题上的帮助。 在绘制数据2时,我想使用与应用于数据1的绘图相同的颜色函数。 例如:

data1={{1,0,0},{0,1,0},{0,0,1}

ListPointPlot3D[data1,PlotStyle->PointSize[0.02],
颜色函数->函数[{x,y,z},RGBColor[x,y,z]]
接下来,我希望以相同的顺序使用前面的颜色绘制另一个数据(相同尺寸)(有一个未知函数将数据1转换为数据2):

data2={{1,1,0},{1,0,1},{0,1,1}

ListPointPlot3D[data2,PlotStyle->PointSize[0.02],
颜色函数->函数[{x,y,z},乐趣[x,y,z]]
但例如,以下简单的试验将不起作用(尽管fun[]本身确实起作用):


这里的问题是,
ListPointPlot3D
获取整数数据并转换为浮点数,然后将浮点数传递给
ColorFunction
,因此如果为离散整数定义颜色函数,则无法匹配浮点数。试试这个。。(如果使用真实数据,您的方法也可能有效)

有点旁白,但您可能会更好地使用图形原语,它看起来像这样:

colors = cfun1 /@ data1;
Graphics3D@MapThread[ {#1, Point@#2} & , {colors, data1} ]
Graphics3D@MapThread[ {#1, Point@#2} & , {colors, data2} ]

使用
data2
绘图的
PlotStyle
选项中
data1
的颜色。
PlotStyle
中的指令列表引用每个数据系列,因此您必须使每个点成为自己的数据系列。我还认为这些值可能不在0和1之间,因此对于
data2
使用的
RGBColor
,请重新缩放它们

ListPointPlot3D[data1, PlotStyle -> PointSize[0.02], 
 ColorFunction -> Function[{x, y, z}, RGBColor[x, y, z]]]


希望这能有所帮助。

试着在第一个例子中询问,如果使用的分数超过3分,就会出现故障。第二个示例可以很好地进行修改:'cfun1[x:{{,{,}]:=RGBColor@x“如果
data1
data2
的长度不同,这两种方法都会有问题。您可以使用
data1[[;;Length@data2]]
例如,要解决这个问题。
colors = cfun1 /@ data1;
Graphics3D@MapThread[ {#1, Point@#2} & , {colors, data1} ]
Graphics3D@MapThread[ {#1, Point@#2} & , {colors, data2} ]
ListPointPlot3D[data1, PlotStyle -> PointSize[0.02], 
 ColorFunction -> Function[{x, y, z}, RGBColor[x, y, z]]]
rs = MinMax /@ Transpose@data1;
ListPointPlot3D[List /@ data2,
 PlotStyle -> ({PointSize[0.02], RGBColor[Quiet@Thread[Rescale[#, rs]]]} & /@ data1)]