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]
To use Automatic
for all but one use Show
Show[
ListPlot[{data1, data2}, PlotMarkers -> Automatic],
ListPlot[data3, PlotMarkers -> Style["*", 20, Red]],
PlotRange -> All
]
"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]]