在BarChart中使用打火机自定义颜色

时间:2011-09-15 21:19:12

标签: colors wolfram-mathematica bar-chart

请考虑:

 dalist = {{901, 503, 522, 1305}, {910, 512, 477, 1260}, 
           {847, 459, 556, 1275}, {799, 517, 527, 1197}}

 cogColors = {RGBColor[0, 0, 1], RGBColor[1, 0, 0], RGBColor[0, 1, 0], RGBColor[1, 1, 0]}

 BarChart[dalist, ChartStyle -> cogColors]

enter image description here

我不明白如何将颜色分配给列表和列表中的值。

这里我的希望是让每个子列表(第一个是:{901,503,522,1305})分配一种颜色(部分[[]]的cogColors)。然后每个酒吧将是更深/更轻但相似的颜色。下面是所需的输出(ppt):

enter image description here

2 个答案:

答案 0 :(得分:5)

BarChart[MapThread[
  Style, {dalist, 
   Transpose@
    Reverse@NestList[Lighter, {Red, Green, Blue, Yellow}, 3]}, 2]]

enter image description here

由Verbeia编辑

您可以使用Blend以及MapThreadStyle的这种方法来获得您想要的任何颜色组合,例如:

extColours = 
 Outer[Blend[{#1, GrayLevel[0.1]}, #2] &, cogColors, {0.2, 0.4, 0.6, 0.8}];

BarChart[MapThread[Style, {dalist, extColours}, 2]]

enter image description here

答案 1 :(得分:5)

BarChart[dalist, ChartStyle -> {cogColors, Opacity /@ {0.4, 0.6, 0.8, 1}}]

enter image description here

关键在于ChartStyle的doc页面中的以下句子:

  

使用ChartStyle-> {spec_1,spec_2,...}形式,嵌套列表中的i,j,...元素   数据集具有通过应用spec_1 [[i]]给出的样式,然后   spec_2 [[j]]等。

这意味着您必须找到具有累积效果的指令。不透明度和颜色的组合有这个。如果你将各种颜色组合在一起,最后会得到最后一种颜色。