Каковы стандартные цвета для участков в Mathematica? - PullRequest
21 голосов
/ 22 марта 2011

( Примечание: Все ответы на этот вопрос действительны для версий Mathematica до версии 10. Для версий 10 и выше см. https://mathematica.stackexchange.com/questions/54486/how-to-access-new-colour-schemes-in-version-10 и https://mathematica.stackexchange.com/questions/54629/what-are-the-standard-colors-for-plots-in-mathematica-10.)

При использовании команды Plot или ListPlot в Mathematica выбираются определенные цвета по умолчанию.

По причинам единообразия в некоторых отчетах я хотел бы использовать их вместе с опцией PlotStyle. Оказалось, что я не могу воспроизвести цвета по умолчанию с заранее заданными названиями цветов , хотя синий и фиолетовый цвета кажутся как-то близкими.

Отсюда и мой вопрос:

Как выбрать стандартные цвета, используемые Mathematica на графиках вместе с PlotStyle?

Заранее спасибо.

Хорошие ответы дали belisarius и Sjoerd , из которых мы можем заключить, что

Plot [Sin [x], {x, 0, 2 Pi}, PlotStyle -> ColorData [1, 4]]

приведет к появлению синуса в четвёртом стандартном цвете, немного приятного зеленого.

Ответы [ 3 ]

19 голосов
/ 15 марта 2012

Я знаю, что это действительно поздно для игры, но выражение, используемое для генерации n-го цвета в ColorData[1], равно:

Hue[FractionalPart[0.67 + 2.0 (i - 1)/GoldenRatio], 0.6, 0.6]

Обновление Основываясь на комментариях Алексея, вы можете найти это, используя:

ColorData[1] // InputForm
16 голосов
/ 22 марта 2011

Цвета, используемые Plot, указаны в ColorData[1].

Сравнить

Graphics[MapIndexed[{#1, 
    Tooltip[Rectangle[{#2[[1]], 0}, {#2[[1]] + 1, 1}], #1]} &, 
  ColorData[1] /@ Range[40]]]

enter image description here

с Велизарием цветами

Graphics[MapIndexed[{#1, 
    Tooltip[Rectangle[{#2[[1]], 0}, {#2[[1]] + 1, 1}], #1]} &, 
  Cases[ListPlot[Table[{i}, {i, 40}]], Hue[x__], Infinity]]]

enter image description here

Они одинаковы, за исключением того, что один является термином Hue, а другой - термином или RGBColor

12 голосов
/ 22 марта 2011

Если вы делаете:

ListPlot[Table[{i}, {i, 10}]] // FullForm  

Вы получите первые 10 использованных оттенков.

Или это дает вам готовый список:

hues = Cases[ListPlot[Table[{i}, {i, 10}]], Hue[x__], Infinity]

{Hue[0.67, 0.6, 0.6],     Hue[0.906068, 0.6, 0.6], 
 Hue[0.142136, 0.6, 0.6], Hue[0.378204, 0.6, 0.6], 
 Hue[0.614272, 0.6, 0.6], Hue[0.85034, 0.6, 0.6], 
 Hue[0.0864079, 0.6, 0.6],Hue[0.322476, 0.6, 0.6], 
 Hue[0.558544, 0.6, 0.6], Hue[0.794612, 0.6, 0.6]}  

Пример использования:

SphericalPlot3D[\[Phi], {\[Theta], 0, Pi}, {\[Phi], 0, 3 Pi},
 Epilog -> 
  Table[Inset[Framed[Style["Spiral", 20],
        Background -> hues[[i]]],
             {i/15 + .1, i/15}], 
  {i, 10}]]  

enter image description here

Если вы предпочитаете цветовое пространство RGB, вы можете сделать:

rgbs= ColorConvert[#, "RGB"] & /@ hues

** Редактировать ** Сравнение с формулой Элая:

mine = Cases[ListPlot[Table[{i}, {i, 10}]], Hue[x__], Infinity]
elis = Table[Hue[FractionalPart[0.67 + 2.0 (i-1)/GoldenRatio],0.6,0.6], {i,1,10}]
Chop[(mine- elis) /. Hue[x_, __] -> x]
(* -> {0, 0, 0, 0, 0, 0, 0, 0, 0, 0} *)

Отлично, Элай!

...