在Mathematica中的ListPlot中指定点样式

时间:2011-09-03 23:39:29

标签: wolfram-mathematica plot point

考虑

dacount = {{0, 69}, {1, 122}, {2, 98}, {3, 122}, {4, 69}}

ListPlot[dacount, AxesOrigin -> {-1, 0}, 
         PlotMarkers ->Automatic
         PlotStyle-> Lighter[Red, #] & /@ Range[0.5, 1, 0.1],
         Filling -> Axis, FillingStyle -> Opacity[0.8], 
         PlotRange -> {{-1, 4.5}, {0, 192}}]

enter image description here

我希望每一点都能采取不同的红色。 但是我不能理解如何设置一个我试图设置为不同列表的样式。

2 个答案:

答案 0 :(得分:6)

在原始代码中,PlotStyle选项不会影响标记符号,因此您可以将其保留。而是将PlotMarkers选项更改为以下内容:

PlotMarkers ->  With[{markerSize =  0.04}, 
 {Graphics[{Lighter[Red, #], Disk[]}], markerSize} & /@ Range[0.5, 1, 0.1]]

在您将列表dacount替换为:

之前,这还不会产生预期的效果
Map[List, dacount]

通过以这种方式增加点列表的深度,从PlotMarkers的列表中为每个点分配了自己的标记样式。所以最终的代码是:

ListPlot[Map[List, dacount], AxesOrigin -> {-1, 0}, 
 PlotMarkers -> 
  With[{markerSize = 
     0.04}, {Graphics[{Lighter[Red, #], Disk[]}], markerSize} & /@ 
    Range[0.5, 1, 0.1]], Filling -> Axis, 
 FillingStyle -> Opacity[0.8], PlotRange -> {{-1, 4.5}, {0, 192}}]

enter image description here

答案 1 :(得分:1)

您也可以通过以下方式执行此操作:

xMax = Max@dacount[[All, 1]];
Show@(ListPlot[{#}, AxesOrigin -> {-1, 0}, PlotMarkers -> Automatic, 
     PlotStyle -> (RGBColor[{(#[[1]] + 5)/(xMax + 5), 0, 0}]), 
     Filling -> Axis, FillingStyle -> Opacity[0.8], 
     PlotRange -> {{-1, 4.5}, {0, 192}}] & /@ dacount)

enter image description here

这会分别在dacount中绘制每个点,并根据x值为其指定一个红色。然后将这些图与Show组合在一起。

我已经为不同的阴影任意选择了缩放和偏移。只要确保最大值为1,您就可以选择任何您想要的内容。