새 데이터 세트를 생성하지 않고 파란색 플롯과 함께 수학 연산을 사용하여 파란색 곡선을 오른쪽으로 10배만큼 이동할 수 있는 방법이 있습니까?
코드는 다음과 같습니다.
\documentclass[a4paper]{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}%fitting functions
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\usepackage{pgfplotstable}
%\pgfkeys{/pgf/number format/.cd,1000 sep={}}
\newcommand{\myfont}{\fontfamily{cmss}\fontseries{ul}\selectfont}% used with mathpazo
\pgfdeclareplotmark{fat-}
{%
\pgfsetlinewidth{1}
\pgfpathmoveto{\pgfqpoint{\pgfplotmarksize}{0pt}}%
\pgfpathlineto{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
\pgfusepathqstroke
}%
\pgfplotsset{/pgfplots/error bars/error bar style={very thick,blue,mark size=2.5},/pgfplots/error bars/error mark={fat-}}
%\pgfplotsset{/pgfplots/label shift={0pt}}
\pgfplotsset{compat=1.15}
\pgfplotsset{label style={font=\Large},
tick label style={font=\Large}}
\pgfplotsset{error bars/.cd,
x dir=both, x explicit,
y dir=both, y explicit,
}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
enable tick line clipping=false,
width=9cm,
height=7cm,
axis line style=semithick,
legend style={at={(0.95,0.3)},draw=none},
legend cell align={right},
x tick style={black,semithick},
x label style=
{at={(ticklabel cs:0.5)},anchor=near ticklabel},
xlabel={$x$},
xmin=1,xmax=1000,
xtick={1,10,100,1000},
xtick pos=bottom,
minor x tick num=9,
xtick align=outside,
y tick style={black,semithick},
y label style=
{at={(ticklabel cs:0.5)},anchor=near ticklabel},
ylabel={$y$},
ymin=0.5,ymax=5,
ytick={0.1,0.5,1,3,5,10},
ytick pos=left,
minor y tick num=9,
ytick align=outside,
]
\addplot [blue,mark=*,mark options={scale=1.5,blue}]
table [x=x,y=y] {
x y
2 0.8
10 1
50 3
};
\addplot [red,mark=*,mark options={scale=1.5,red}] table [x=x,y=y] {
x y
20 0.8
100 1
500 3
};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
답변1
\pgfplotstableread
다음을 사용하여 x 표현식을 변경하여 테이블을 한 번 사용하고 다시 사용할 수 있습니다 x expr
.
\documentclass[a4paper]{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}%fitting functions
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\usepackage{pgfplotstable}
%\pgfkeys{/pgf/number format/.cd,1000 sep={}}
\newcommand{\myfont}{\fontfamily{cmss}\fontseries{ul}\selectfont}% used with mathpazo
\pgfdeclareplotmark{fat-}
{%
\pgfsetlinewidth{1}
\pgfpathmoveto{\pgfqpoint{\pgfplotmarksize}{0pt}}%
\pgfpathlineto{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
\pgfusepathqstroke
}%
\pgfplotsset{/pgfplots/error bars/error bar style={very thick,blue,mark size=2.5},/pgfplots/error bars/error mark={fat-}}
%\pgfplotsset{/pgfplots/label shift={0pt}}
\pgfplotsset{compat=1.15}
\pgfplotsset{label style={font=\Large},
tick label style={font=\Large}}
\pgfplotsset{error bars/.cd,
x dir=both, x explicit,
y dir=both, y explicit,
}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
enable tick line clipping=false,
width=9cm,
height=7cm,
axis line style=semithick,
legend style={at={(0.95,0.3)},draw=none},
legend cell align={right},
x tick style={black,semithick},
x label style= {at={(ticklabel cs:0.5)},anchor=near ticklabel},
xlabel={$x$},
xmin=1,xmax=1000,
xtick={1,10,100,1000},
xtick pos=bottom,
minor x tick num=9,
xtick align=outside,
y tick style={black,semithick},
y label style= {at={(ticklabel cs:0.5)},anchor=near ticklabel},
ylabel={$y$},
ymin=0.5,ymax=5,
ytick={0.1,0.5,1,3,5,10},
ytick pos=left,
minor y tick num=9,
ytick align=outside,
]
\pgfplotstableread{
x y
2 0.8
10 1
50 3
}{\mytable};
\addplot [blue,mark=*,mark options={scale=1.5,blue}]
table [x=x,y=y] {\mytable};
\addplot [red,mark=*,mark options={scale=1.5,red}]
table [x expr=10*\thisrow{x},y=y] {\mytable};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
답변2
허용된 답변에 대한 의견에 추가됩니다.
열 이름에 신경쓰고 싶지 않은 경우 \thisrowno{<idx>}
변경되지 않는 데이터의 경우 and를 사용할 수 있습니다(첫 번째 곡선의 좌표는 모두 두 번째 곡선의 경우 y축만) x index
.y index
\begin{tikzpicture}
\begin{axis}[...]
\pgfplotstableread{
foo bar
2 0.8
10 1
50 3
}{\mytable};
\addplot [blue,mark=*,mark options={scale=1.5,blue}]
table [x index=0,y index=1] {\mytable};
\addplot [red,mark=*,mark options={scale=1.5,red}]
table [x expr=10*\thisrowno{0},y index=1] {\mytable};
\end{axis}
\end{tikzpicture}
foo
그것들 이 있거나 bar
없거나 전혀 동일한 결과를 제공합니다.