关于函数曲线的线型?

发布于 2022-06-06 11:37:35

各位老师,我在使用TIKZ编译出多函数的多曲线图时,出现曲线的线型从第六条起,绿线和橙线是虚线的形式显示,但是我代码里都是ultra thick类型,我需要的结果是全部显示为实线条。
另外,Y轴刻度怎样放大100倍,即以百分数的形式来表示。谢谢。

\documentclass[1pt]{standalone}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{euler}
\usepackage{MnSymbol}
\usepackage{stmaryrd}
\usepackage{xcolor}
\usepackage{xfp}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepgfplotslibrary{colormaps}
\usetikzlibrary{pgfplots.groupplots,matrix}
\pgfplotsset{height=8cm,width=14cm}
\begin{document}
\begin{tikzpicture}
    \begin{loglogaxis}[
        enlargelimits=false,
        grid=both,
        ymin=5e-6,ymax=1,
        ymode=normal,
xlabel= $\mathnormal{Wave\quad length}$,
ylabel=$\mathnormal{amplitude\quad transmission}$,
        log basis y=10,
        log basis x=10,
        domain=1e-3:1e7,samples=360
        ]
        \addplot+[no marks,ultra thick,darkgray]{\fpeval{exp(((0.4697*0.025/\x)^2)*(-3.1415))}};
        \addplot+[no marks,ultra thick,gray]{\fpeval{1-exp(((0.4697*0.8/\x)^2)*(-3.1415))}};
        \addplot+[no marks,ultra thick,magenta]{\fpeval{exp(((0.4697*0.8/\x)^2)*(-3.1415))}};
        \addplot+[no marks,ultra thick,pink]{\fpeval{1-exp(((0.4697*8/\x)^2)*(-3.1415))}};
        \addplot+[no marks,ultra thick,blue]{\fpeval{exp(((0.4697*2.5/\x)^2)*(-3.1415))}};
        \addplot+[no marks,ultra thick,green]{\fpeval{exp(((0.4697*8/\x)^2)*(-3.1415))}};
        \addplot+[no marks,ultra thick,orange]{\fpeval{exp(((0.4697*25/\x)^2)*(-3.1415))}};
\legend{$\mathnormal{\lambda=0.025mm}$,
    $\mathnormal{\lambda=0.8mm}$,
    $\mathnormal{\lambda=0.8mm}$,
    $\mathnormal{\lambda=8mm}$,
    $\mathnormal{\lambda=2.5mm}$,
    $\mathnormal{\lambda=8mm}$,
    $\mathnormal{\lambda=25mm}$,
}
\end{loglogaxis}
\end{tikzpicture}
\end{document} 

e05.jpg

查看更多

关注者
0
被浏览
1.1k
1 个回答
Saino
Saino 2022-06-06
这家伙很懒,什么也没写!

你这代码习惯太糟糕了,看了下提问者的四个提问,所有的问题就在于你一直写自己看不懂的代码。不知道有什么用的就把它删掉。看不懂的代码往里加,最后出现什么错误结果是不可控的,放在提问里更让问题难以看懂,咱们应该保证明确知道自己写的每一行都是什么意思。

问题有这么几个:

  1. 1pt的选项没有意义
  2. amsmath, amssymb, amsfonts, MnSymbol, stmaryrd, pgfplotstable, colormaps, gfplots.groupplots,matrix 这些东西对题目里的图像没有用,删掉。
  3. ymode都设为normal了,不要去设置log basis y,那是给log模式用的。
  4. \addplot后面的加号没有意义,为什么要写?

把这些乱七八糟的删掉,结果就对了。

另外你这个运算量太大了点,跑起来特别慢,最好还是用别的软件画好插进来。如果你能够用lualatex编译的话,可以用下面的代码代替xfp宏包,速度会快很多

%!TEX program=lualatex
\documentclass{standalone}
\usepackage{euler}
\usepackage{xcolor}
%\usepackage{xfp}
\usepackage{pgfplots}
\pgfplotsset{height=8cm,width=14cm}
\catcode`\%=12
\def\fpeval#1{\directlua{tex.sprint(string.format("%f",#1))}}
\catcode`\%=14
\begin{document}
\begin{tikzpicture}
    \begin{loglogaxis}[
        enlargelimits=false,
        grid=both,
        ymin=5e-6,ymax=1,
        ymode=normal,
xlabel= $\mathnormal{Wave\quad length}$,
ylabel=$\mathnormal{amplitude\quad transmission}$,
        log basis x=10,
        domain=1e-3:1e7,samples=360
        ]
        \addplot[no marks,ultra thick,darkgray]{\fpeval{math.exp(((0.4697*0.025/\x)^2)*(-3.1415))}};
        \addplot[no marks,ultra thick,gray]{\fpeval{1-math.exp(((0.4697*0.8/\x)^2)*(-3.1415))}};
        \addplot[no marks,ultra thick,magenta]{\fpeval{math.exp(((0.4697*0.8/\x)^2)*(-3.1415))}};
        \addplot[no marks,ultra thick,pink]{\fpeval{1-math.exp(((0.4697*8/\x)^2)*(-3.1415))}};
        \addplot[no marks,ultra thick,blue]{\fpeval{math.exp(((0.4697*2.5/\x)^2)*(-3.1415))}};
        \addplot[no marks,ultra thick,green]{\fpeval{math.exp(((0.4697*8/\x)^2)*(-3.1415))}};
        \addplot[no marks,ultra thick,orange]{\fpeval{math.exp(((0.4697*25/\x)^2)*(-3.1415))}};
\legend{$\mathnormal{\lambda=0.025mm}$,
    $\mathnormal{\lambda=0.8mm}$,
    $\mathnormal{\lambda=0.8mm}$,
    $\mathnormal{\lambda=8mm}$,
    $\mathnormal{\lambda=2.5mm}$,
    $\mathnormal{\lambda=8mm}$,
    $\mathnormal{\lambda=25mm}$,
}
\end{loglogaxis}
\end{tikzpicture}
\end{document} 

image.png

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览