我有一个像
这样的简单ListPlotlist2 = Table[{x, Sqrt[x]}, {x, 0, 100}];
现在我想用RED为特定点着色,比如每5点,我试过
mycolor[x_] /; Mod[x, 5] == 0 = Red;
mycolor[_] = Blue;
现在
ListPlot[#, PlotStyle -> AbsolutePointSize[3], ColorFunction ->
mycolor[#[[All, 1]], ColorFunctionScaling -> False]] &[list2]
不能正常工作,所有点仍然是蓝色的。 这有什么不对?
谢谢, ARCHI
答案 0 :(得分:3)
以下是获取结果的简便方法: -
list2 = Table[{x, Sqrt[x]}, {x, 0, 100}];
mycolor[x_] := If[Mod[x, 5] == 0, Red, Blue];
mycolors = mycolor /@ list2[[All, 1]];
ListPlot[List /@ list2,
PlotStyle -> Map[{AbsolutePointSize[3], #} &, mycolors]]
或者,使用颜色功能,感谢george链接上的rm -rf's answer: -
list2 = Table[{x, Sqrt[x]}, {x, 0, 100}];
mycolor = Function[{x, y}, If[Mod[x, 5] == 0, Red, Blue]];
ListLinePlot[list2,
PlotStyle -> AbsolutePointSize[3], ColorFunction -> mycolor,
ColorFunctionScaling -> False] /. Line -> Point
进一步发表评论
对于不同的情节标记,我已经恢复了简单的方法。为了在ListPlot中应用不同的样式和绘图标记,不同样式的点必须位于单独的列表中,因此List /@ list2
。 (但实际上只需要两个清单。)
Clear[mycolor];
list2 = Table[{x, Sqrt[x]}, {x, 0, 100}];
mycolor[x_] := If[Mod[x, 5] == 0,
{Red, "\[FilledUpTriangle]", 14},
{Blue, "\[FilledSmallCircle]", 6}];
mycolorspec = mycolor /@ First /@ list2;
ListPlot[List /@ list2,
PlotMarkers -> Apply[Style[#2, FontSize -> #3, #1] &,
mycolorspec, {1}]]