Как наложить два ReliefPlots или другую графику
Можно ли накладывать две или более графики в Mathematica, если графики генерируются такими функциями, как ReliefPlot или DensityPlot, используя Opacity для управления внешним видом?
Например:
a = ReliefPlot[
Table[i + Sin[i^2 + j^2], {i, -4, 4, .03}, {j, -4, 4, .03}], ImageSize -> 100]
b = ReliefPlot[
Table[i + Sin[i^3 + j^3], {i, -4, 4, .03}, {j, -4, 4, .03}], ImageSize -> 100]
Show[a,b]
![]()
объединяет два, но я не могу понять, как вставить команду Opacity где угодно, чтобы они были видны. В документации указано, что эти функции принимают те же параметры, что и Graphics ( "ReliefPlot имеет те же опции, что и Graphics, со следующими дополнениями и изменениями" ), но я не понимаю, как управлять графикой... (И я могу смутитесь о различии между графическими опциями и директивами.)
Просвещение - и меньше непрозрачности - очень приветствуется!
Изменить: Ничего себе, вы, ребята, быстрее моей версии Mathematica - спасибо!
Ответы
Ответ 1
Вам нужно будет выдать директиву opacity на ColorFunction
следующим образом:
a = ReliefPlot[
Table[i + Sin[i^2 + j^2], {i, -4, 4, .03}, {j, -4, 4, .03}],
ImageSize -> 100]
b = ReliefPlot[
Table[i + Sin[i^3 + j^3], {i, -4, 4, .03}, {j, -4, 4, .03}],
ImageSize -> 100,
ColorFunction -> (Directive[Opacity[0.5],
ColorData["Rainbow"][#]] &)]
Show[a, b]
![enter image description here]()
В общем случае во всех функциях *Plot*
вы управляете непрозрачностью с помощью PlotStyle
или ColorFunction
, в зависимости от обстоятельств. Если это всего лишь примитив Graphics
, вы, вероятно, сделаете что-то вроде Graphics[{Opacity[0.5], object}]
.
Ответ 2
Так как ReliefPlot
не имеет опции PlotStyle
, вы можете использовать BaseStyle -> Opacity[0.5]
для обеспечения прозрачности в графике.
![enter image description here]()
Ответ 3
Альтернативой является работа с Image
и ReliefImage
, а затем скомпилировать полученные изображения вместе с помощью ImageCompose
:
ImageCompose[
ReliefImage[Table[i + Sin[i^2 + j^2], {i, -4, 4, .03}, {j, -4, 4, .03}]],
{ReliefImage[Table[i + Sin[i^3 + j^3], {i, -4, 4, .03}, {j, -4, 4, .03}]],
0.5}
]
![enter image description here]()
Так как ReliefPlot
также существенно возвращает пиксельные данные в формате Graphics
-compatible, возможно, Image
подойдет вам лучше.
Функция цвета по умолчанию ReliefImage
отличается: вы можете использовать ColorFunction -> "LakeColors"
для переключения на ReliefPlot
один.
Первоначально у меня была функция для извлечения растровых данных из ReliefPlot
, но затем Бретт Чемпион указал на RasterImage
в комментарии ниже
Ответ 4
Ответы, использующие прозрачность, будут работать очень общим образом, но в этом конкретном примере объединения двух ReliefPlot [] s, возможно, вы захотите рассмотреть построение суммы двух:
f[i_] := i + Sin[i^2 + j^2];
g[i_] := i + Sin[i^3 + j^3];
ReliefPlot[Table[f[i] + g[i], {i, -4, 4, .03}, {j, -4, 4, .03}], ImageSize -> 100]
Ответ 5
Show[a, {Opacity[0.5],#}& /@ b]