1
$\begingroup$

Is there a way to use single ListLinePlot? I don't like my solution.

Here is a minimal example.

SeedRandom@2;
xdata = RandomInteger[5, {3, 20}];
ydata = xdata + 10;
Show[ListLinePlot[xdata, PlotStyle -> ColorData[97, 1]], 
 ListLinePlot[ydata, PlotStyle -> ColorData[97, 2]], PlotRange -> All]

plot

I don't know why this doesn't work

ListLinePlot[{xdata, ydata}, 
 PlotStyle -> {ColorData[97, 1], ColorData[97, 2]}]
$\endgroup$
2
  • $\begingroup$ {{list1, list2}, {list3, list4}} as first argument does not work; you need to have {list1,list2,list3,list4}. $\endgroup$
    – kglr
    Commented Oct 14, 2018 at 3:18
  • $\begingroup$ You have a list of lists of lists, and that is too much nesting for ListLinePlot[] to style properly. As the answers to your question suggest, you need to do some flattening. $\endgroup$ Commented Oct 14, 2018 at 7:00

2 Answers 2

2
$\begingroup$
ListLinePlot[Riffle[xdata, ydata], PlotStyle -> (ColorData[97] /@ {1, 2})]

enter image description here

A more cumbersome alternative,

ListLinePlot[Join@@{xdata, ydata}, PlotStyle -> (ColorData[97] /@ {1, 1, 1, 2, 2, 2})]

same picture

You can also wrap each data set with Style and assign its color:

ListLinePlot[Join @@ 
  MapIndexed[Function[{x, p}, Style[#, ColorData[97, p[[1]]]] & /@ x], {xdata, ydata}, 1]]

same picture

$\endgroup$
5
  • $\begingroup$ When I added more option for PlotStyle, it does not work. Say I wanna set AbsoluteThickness@4 $\endgroup$ Commented Oct 14, 2018 at 4:07
  • 1
    $\begingroup$ @Okkes, you can use PlotStyle->(Directive[AbsoluteThickness[4],,ColorData[97]@#]&/@{1,2}) $\endgroup$
    – kglr
    Commented Oct 14, 2018 at 4:13
  • $\begingroup$ your work around works only two cluster data set. What if I have three or more data set? $\endgroup$ Commented Jan 28, 2019 at 2:37
  • $\begingroup$ Sorry, your last solution works! But I would like to use custom color for each cluster, say, col0 = {Red, Darker@Green, Blue}; $\endgroup$ Commented Jan 28, 2019 at 2:45
  • 1
    $\begingroup$ ListLinePlot[ Join @@ MapIndexed[ Function[{x, p}, Style[#, col0[[p]]] & /@ x], {A15, A30, A60}, 1]] This works!! $\endgroup$ Commented Jan 28, 2019 at 2:51
1
$\begingroup$
SeedRandom@2;
xdata = RandomInteger[5, {3, 20}];
ydata = xdata + 10;
Show[ListLinePlot[#,PlotStyle -> ColorData[97, #[[1, 1]]]] & /@ {xdata, ydata}, 
PlotRange -> All]  

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.