Подтвердить что ты не робот

Как наложить два 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 - спасибо!

4b9b3361

Ответ 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]