Change only one plotmarker in listplot

{data1, data2, data3} = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
(* {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}} *)

With Automatic you get

ListPlot[{data1, data2, data3}, PlotMarkers -> Automatic]

Mathematica graphics

To use Automatic for all but one use Show

Show[
 ListPlot[{data1, data2}, PlotMarkers -> Automatic],
 ListPlot[data3, PlotMarkers -> Style["*", 20, Red]],
 PlotRange -> All
 ]

Mathematica graphics


"I still could use a work around for version 11."

As work-around for v11, you can: (1) use PlotMarkers -> Automatic, (2) correct the styling of markers using the function fixMarkers, (3) replace the marker for dataset i with the desired marker using the function replaceMarker[i, marker]:

ClearAll[fixMarkers, replaceMarker]
fixMarkers = Replace[#, {dir_, GeometricTransformation[Inset[a_, b__], c__]} :> {dir, 
  GeometricTransformation[
    Inset[Replace[a, _EdgeForm :> Sequence[EdgeForm[], dir], All], b], c]}, All] &;

replaceMarker[i_, marker_] := Replace[fixMarkers @ #, 
    p : {{___, _GeometricTransformation} .., ___} :>  
     MapAt[# /. Inset[a_, b__] :> Inset[marker, b] &, p, {i}] , All] &;

Example:

data = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}} ;
lp = ListPlot[data, PlotMarkers -> Automatic, ImageSize -> Large];

Row[{lp, replaceMarker[3, Style["*", 24]] @ lp}, Spacer[10]]

enter image description here

Tags:

Plotting