2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Два графика в один осях \addplot3 (pgfplots)
Сообщение10.06.2021, 16:26 
Здравствуйте.

Хочу построить два графика с помощью pgfplots. Вот первый:

Изображение
Код:
\begin{tikzpicture}
         \begin{axis}[
            xmin=-pi,
            xmax=pi,
            ymin=-pi,
            ymax=pi,
            zmin=0,
            zmax=2.5,
            xlabel={$\varkappa_x$},
            ylabel={$\varkappa_y$},
            zlabel={$\omega$},
            xtick={-pi,-pi/2,0,pi/2,pi},
            xticklabels={$-\pi$,$-\frac{\pi}{2}$,$0$,$\frac{\pi}{2}$,$\pi$},
            ytick={-pi,-pi/2,0,pi/2,pi},
            yticklabels={$-\pi$,$-\frac{\pi}{2}$,$0$,$\frac{\pi}{2}$,$\pi$}
            ]
            \addplot3[surf,domain=-pi:pi,samples=40]{sqrt(2*sin(deg((x+y)/2))^2+sin(deg(x/2))^2+sin(deg(y/2))^2-sqrt(4*sin(deg((x+y)/2))^4+(sin(deg(x/2))^2-sin(deg(y/2))^2)^2))};
         \end{axis}
      \end{tikzpicture}
,

вот второй:
Изображение

Код:
\begin{tikzpicture}
         \begin{axis}[
            xmin=-pi,
            xmax=pi,
            ymin=-pi,
            ymax=pi,
            zmin=0,
            zmax=2.5,
            xlabel={$\varkappa_x$},
            ylabel={$\varkappa_y$},
            zlabel={$\omega$},
            xtick={-pi,-pi/2,0,pi/2,pi},
            xticklabels={$-\pi$,$-\frac{\pi}{2}$,$0$,$\frac{\pi}{2}$,$\pi$},
            ytick={-pi,-pi/2,0,pi/2,pi},
            yticklabels={$-\pi$,$-\frac{\pi}{2}$,$0$,$\frac{\pi}{2}$,$\pi$}
            ]
            %\addplot3[surf,domain=-pi:pi,samples=40]{sqrt(2*sin(deg((x+y)/2))^2+sin(deg(x/2))^2+sin(deg(y/2))^2+sqrt(4*sin(deg((x+y)/2))^4+(sin(deg(x/2))^2-sin(deg(y/2))^2)^2))};
         \end{axis}
      \end{tikzpicture}
.

Когда пытаюсь построить оба графика в одних и тех же осях, вот что получается

Изображение

Код:
\begin{tikzpicture}
         \begin{axis}[
            xmin=-pi,
            xmax=pi,
            ymin=-pi,
            ymax=pi,
            zmin=0,
            zmax=2.5,
            xlabel={$\varkappa_x$},
            ylabel={$\varkappa_y$},
            zlabel={$\omega$},
            xtick={-pi,-pi/2,0,pi/2,pi},
            xticklabels={$-\pi$,$-\frac{\pi}{2}$,$0$,$\frac{\pi}{2}$,$\pi$},
            ytick={-pi,-pi/2,0,pi/2,pi},
            yticklabels={$-\pi$,$-\frac{\pi}{2}$,$0$,$\frac{\pi}{2}$,$\pi$}
            ]
            \addplot3[surf,domain=-pi:pi,samples=40]{sqrt(2*sin(deg((x+y)/2))^2+sin(deg(x/2))^2+sin(deg(y/2))^2-sqrt(4*sin(deg((x+y)/2))^4+(sin(deg(x/2))^2-sin(deg(y/2))^2)^2))};
            %\addplot3[surf,domain=-pi:pi,samples=40]{sqrt(2*sin(deg((x+y)/2))^2+sin(deg(x/2))^2+sin(deg(y/2))^2+sqrt(4*sin(deg((x+y)/2))^4+(sin(deg(x/2))^2-sin(deg(y/2))^2)^2))};
         \end{axis}
      \end{tikzpicture}
,

то есть у меня второй график перекрывает первый в окрестности нуля. Как можно сделать, чтобы первый график в окрестности нулю накладывался на второй? Понятно, что если я поменяю последовательность вызова \addplot3, то первый график всюду наложиться на второй. Хотелось бы только в окрестности нуля, чтобы картинка выглядела правильно.

 
 
 
 Re: Два графика в один осях \addplot3 (pgfplots)
Сообщение10.06.2021, 16:32 
А как вы себе это представляете?

Можно поменять ракурс, но какие-то участки одной поверхности заведомо будут перекрываться другими. Можно сделать "верхнюю" поверхность полупрозрачной (добавив параметр opacity=0.5 или что-нибудь подобное), но результат, пожалуй, будет выглядеть не сильно лучше. Можно сделать верхнюю поверхность "сеткой" (заменить surf на mesh), но... в общем, мне как-то тоже не нравится.

Ну и делать это конкретно в окрестности нуля, пожалуй, еще сложнее (разве что после рисования того, что уже есть, добавить "третий" вариант на уменьшенном диапазоне координат, сделав для него один из вариантов, упомянутых выше).

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group