3D 플롯에 로그 y축이 필요하지만 생성된 플롯도 음의 y 범위(축 레이블이 아니라 y 도메인)에 있는 것 같습니다. y-도메인은 -1:1인 것 같습니다(실제로는 그렇습니다. 그러나 "10^y" -> y-도메인=0.1:10(코드의 설명 참조) 때문에 작동해야 한다고 생각합니다).
내 코드에 이 게시물을 사용했습니다. 대수 x 및 y 축을 사용한 3D 표면 플롯
플롯 1 - 선형 y축, 플롯 2 - 로그 y축(시도)
MWE:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\usepackage{tikz}
\begin{document}
\begin{figure}[h!]
\begin{tikzpicture}
\begin{axis}
[scale = 1,
xlabel = {$\sigma$},
xmin = -10, xmax = 10,
ylabel = {$\omega$},
ymin = 0.1, ymax = 10,
zlabel={$A$},
zmin = -40, zmax = 20,
colormap/viridis]
\addplot3[
surf,
samples=40,
domain=-1:10,
domain y=0:10]
(x, y, {20*log10(1/sqrt(((1.40845*y)+(2*x*y))^2+(1+(1.40845*x)+x^2-y^2)^2))});
\end{axis}
\end{tikzpicture}
\caption{Plot 1}
\end{figure}
\begin{figure}[h!]
\begin{tikzpicture}
\begin{axis}
[scale = 1,
xlabel = {$\sigma$},
xmin = -10, xmax = 10,
ylabel = {$\omega$},
ymin = 1e-1, ymax = 1e1,
zlabel={$A$},
zmin = -40, zmax = 20,
ymode=log, %added ymode
colormap/viridis]
\addplot3[
surf,
samples=40,
domain=-1:10,
domain y=-1:1] %new y-domain (10^y in the next line)
(x, 10^y, {20*log10(1/sqrt(((1.40845*y)+(2*x*y))^2+(1+(1.40845*x)+x^2-y^2)^2))});
\end{axis}
\end{tikzpicture}
\caption{Plot 2}
\end{figure}
\end{document}
나는 다음과 같은 것을 기대합니다(Mathematica에서 생성된 플롯 - 로그 y축 포함):
답변1
너무 복잡하게 생각하셨나봐요. / domain y
에 따라 조정하면 원하는 결과를 얻을 수 있습니다.ymin
ymax
% used PGFPlots v1.16
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
view={50}{50},
width=\axisdefaultwidth,
height=5cm,
xlabel={$\sigma$},
xmin=-1, xmax=10,
ylabel={$\omega$},
ymin=1e-1, ymax=1e1,
zlabel={$A$},
zmin=-40, zmax=20,
ymode=log,
colormap/viridis,
]
\addplot3[
surf,
samples=40,
domain=-1:10,
domain y=0.1:10, % <-- adapted
% (no need to use a parametric plot)
] {20*log10(1/sqrt(((1.40845*y)+(2*x*y))^2+(1+(1.40845*x)+x^2-y^2)^2))};
\end{axis}
\end{tikzpicture}
\end{document}
답변2
방정식에서 10^y당 모든 y를 대입하면 더 유사한 결과를 얻을 수 있다고 생각합니다. 다음을 참조하세요.
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[scale = 1,
xlabel = {$\sigma$},
xmin = -10, xmax = 10,
ylabel = {$\omega$},
ymin = 1e-1, ymax = 1e1,
zlabel={$A$},
zmin = -40, zmax = 20,
ymode=log, %added ymode
view={60}{45},
colormap/viridis]
\addplot3[
surf,
samples=100,
domain=-1:9,
domain y=-1:1] %new y-domain (10^y in the next line)
(x, 10^y, {20*log10(1/sqrt(((1.40845*(10^y))+(2*x*(10^y)))^2+(1+(1.40845*x)+x^2-
(10^y)^2)^2))});
\end{axis}
\end{tikzpicture}
\end{document}
주황색 표면 바닥의 둥근 모양은 표면을 다듬고 보다 연속적인 플롯을 만드는 Mathematica의 기능일 수 있습니다. 또는 tikz를 사용하면 F(x,y,z)= G(x,y,z)-h(x,y,z)와 같은 다른 수학적 함수의 뺄셈을 수행하여 원하는 표면 모양을 얻을 수 있습니다.