【问题标题】:Conditional coloring based on a gradient基于渐变的条件着色
【发布时间】:2011-11-15 20:41:44
【问题描述】:

请考虑:

Manipulate[
Row[{
Graphics[Disk[]], 
Graphics[{
 Polygon[{{0, 0}, {3, 0}, {3, 1}, {0, 1}},
 VertexColors -> {White, Blend[{White, Blue}], 
 Blend[{White, Blue}], White}],
 Black, Thick,
 Line[{{i, 0}, {i, 1}}]}, ImageSize -> 300]}], 
{i, 0, 3}]

Gradient Filling 上使用 Szabolcs 的解决方案

如何使用位于黑线下方的颜色为磁盘着色?

【问题讨论】:

  • 我不确定这是否有任何特定于 v.8 的内容。 v.8 的任何人都可以验证这一点吗?如果没有,让我们删除mathematica-8
  • @rcollyer。我系统地把它说出来,以便回答者知道我用来适应的系统。有意义吗?
  • 我明白了。我只是想确保这是 v.8 的特定问题,而不是我可以回答的问题。 (我有第 7 版。)
  • @rcollyer。那么我应该只标记 Mathematica 并精确地在问题中使用 M8 吗?
  • 可能。不过,如果您注意到您使用的是 v.8 功能,那么 v.8 标签绝对是合适的。

标签: graphics wolfram-mathematica


【解决方案1】:

这是一种可行的解决方案,因为左侧的颜色是White,并且渐变是线性的。

With[{max = 3, color = Blend[{White, Blue}]}, 
 Manipulate[
  Row[{Graphics[{Opacity[i/max], color, Disk[]}], 
    Graphics[{Polygon[{{0, 0}, {max, 0}, {max, 1}, {0, 1}}, 
       VertexColors -> {White, color, color, White}], Black, Thick, 
      Line[{{i, 0}, {i, 1}}]}, ImageSize -> 300]}], {i, 0, max}]]


如果每一端都有两种不同的颜色(即,White 以外的颜色),Opacity 方法将不起作用。相反,您可以使用可选的混合分数参数来Blend 所需比例的颜色。这是一个例子:

With[{max = 3, color1 = Red, color2 = Green}, 
 Manipulate[
  Row[{Graphics[{Blend[{color1, color2}, i/max], Disk[]}], 
    Graphics[{Polygon[{{0, 0}, {max, 0}, {max, 1}, {0, 1}}, 
       VertexColors -> {color1, color2, color2, color1}], Black, 
      Thick, Line[{{i, 0}, {i, 1}}]}, ImageSize -> 300]}], {i, 0, 
   max}]]

【讨论】:

    【解决方案2】:

    如果您需要混合颜色而不是白色和白色,Opacity 将不适合。相反,您可以使用 Blend 的第二个参数来更接近 Szabolcs 的原始解决方案,如下所示:

    skyBlue = Blend[{White,Blue}];
    Manipulate[ Row[{ Graphics[{Blend[{White,skyBlue},i/3], Disk[]}],  
     Graphics[{  Polygon[{{0, 0}, {3, 0}, {3, 1}, {0, 1}},  
     VertexColors -> {White, skyBlue,   
     skyBlue, White}],  Black, Thick,  
     Line[{{i, 0}, {i, 1}}]}, ImageSize -> 300]}],  {i, 0, 3}]
    

    我将 i 除以 3,因为该参数在 01 之间变化。

    【讨论】:

    • sigh 我打字不够快。
    • oooh... 我在一个编辑中解决了这个问题,该编辑比你的 秒! :)
    • 尽管有多个答案,或者多个“让我们看看这种方法的用途”,有时会很有帮助。有不同风格的解决方案,像我这样的初学者觉得从各个角度看都很有趣......
    • @Verbeia,由于我们都有相同的答案,我非常愿意修复您的 {} 小错误,上传屏幕截图并回滚我的答案 :)跨度>
    • @Verbeia Rep points 是一款不错的游戏,但学习更好。请不要放弃回答。我很喜欢你的帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    相关资源
    最近更新 更多