gpt4 book ai didi

wolfram-mathematica - 如何摆脱 Mathematica 中 ArrayPlot 的灰色边界?

转载 作者:行者123 更新时间:2023-12-04 08:06:59 26 4
gpt4 key购买 nike

我有以下情节。

lst={{1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 
0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0,
0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0,
1}, {1, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1}};
ArrayPlot[lst, Mesh -> All,
MeshStyle -> Directive[AbsoluteThickness[3.], Gray, Opacity[0.1]]]

enter image description here

但它看起来并不像我预期的那样,我希望黑色方块的灰色边界/网格被这些黑色方块的颜色所掩盖。只显示白色方块的灰色边界/网格。

最佳答案

这不是使用内置选项 (AFAIK) 可以轻松解决的问题。您可以定义一个自定义函数,该函数仅在您需要的那些行和列处绘制网格线并屏蔽其他行和列。这是我的解决方案:

gridArrayPlot[mat_?MatrixQ, options___] := Module[{dim = Dimensions@mat},
Show[
ArrayPlot[mat, Mesh -> ({Range[#1 - 1], Range[#2 - 1]} & @@ dim), options],
ArrayPlot[mat, Mesh -> ({{0, #1}, {0, #2}} & @@ dim),
ColorRules -> {0 -> Directive[Opacity@0, White]},
options /. Opacity[_] :> Opacity[1] /. (RGBColor[___] | GrayLevel[_]) :> White
]
]
]

上述解决方案首先绘制了一个 ArrayPlot ,在除外边界外的任何地方绘制网格并覆盖第二个 ArrayPlotWhite单元格设置为透明,并绘制 White外边界上的网格线(以掩盖从上一个图中伸出的位)。

您可以将上述函数称为
gridArrayPlot[lst,MeshStyle -> Directive[AbsoluteThickness[3.],Gray,Opacity[0.1]]]

输出是:

enter image description here

关于wolfram-mathematica - 如何摆脱 Mathematica 中 ArrayPlot 的灰色边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8689583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com