Mathematica中绘图的标准颜色是什么?

22
注意: 本问题的所有答案都适用于版本10之前的Mathematica。对于版本10及以上,请参见https://mathematica.stackexchange.com/questions/54486/how-to-access-new-colour-schemes-in-version-10https://mathematica.stackexchange.com/questions/54629/what-are-the-standard-colors-for-plots-in-mathematica-10。)
在使用Mathematica中的PlotListPlot命令时,会选择某些默认颜色。
出于报告的一致性原因,我想在PlotStyle选项中使用它们。然而,我无法使用预定义的颜色名称复制默认颜色,尽管蓝色和紫色似乎有些接近。
因此我的问题是:
如何在使用PlotStyle时选择Mathematica中绘图所使用的标准颜色?
提前感谢您。

belisariusSjoerd给出了很好的答案,我们可以得出结论:

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

将会绘制一个正弦图,使用第四种标准颜色,一种漂亮的绿色。


4
运行ColorData[1, "ColorList"]命令,可以查看所有颜色的RGB值。 - Simon
感谢您的额外提示,@Simon。 - Robert Filter
3个回答

20

我知道现在已经晚了,但是用来生成ColorData[1]中第n个颜色的表达式是:

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

更新 根据Alexey在下面的评论中提到,你可以使用以下方法找到此内容:

ColorData[1] // InputForm

4
有趣。我们可以使用 ColorData[1] // InputForm 得到这个结果。 - Alexey Popkov
哇,我想不到那个。我是在查找“PlotLegends”包时发现的。 - Eli Lansey
@Alexey 我认为你的回答是这个问题的最终答案。 - Dr. belisarius
1
@belisarius 不完全是。问题不在于如何生成ColorData[1],而是Plot使用了什么颜色方案。 - Sjoerd C. de Vries
2
@Sjoerd - 哦,别这样Sjoerd,公式给你的信息和表格是一样的。事实上,大多数情况下我更喜欢公式;将公式转换为表格比反过来容易得多。+1 - stevenvh

17

Plot使用的颜色在ColorData[1]中。

比较

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

enter image description here

使用Belisarius的颜色

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 色彩模式。


6
很抱歉,这对于Mathematica 10不再适用。随着PlotThemes的引入,许多内容发生了变化。可以通过ColorData获取的默认绘图方案是ColorData[97, x],正如在这个帖子中所指出的:http://mathematica.stackexchange.com/questions/54629/what-are-the-standard-colors-for-plots-in-mathematica-10 - Thomas Fankhauser

12

如果您执行以下操作:

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}]]  

在此处输入图像描述

如果你喜欢使用RGB颜色空间,可以这样做:

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

**编辑** 与Eli的公式进行比较:

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} *)

太棒了,Eli!


谢谢你提供的好方法,我之前不知道 FullForm 的用法 :) - Robert Filter
2
@Robert,FullForm是你的好朋友。在任何地方使用它来更深入地了解内部发生的事情。 - Sjoerd C. de Vries

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接