
일반적으로 나는 곡선 플로팅에 일반 tikz를 사용하고 있습니다. 50mm 그리드의 "교과서 스타일" 좌표계가 필요합니다.
tikz 데이터 시각화 라이브러리를 사용해 보았습니다.
\documentclass{article}
\usepackage{tikz,pgfplots}
\usetikzlibrary{datavisualization}
\usetikzlibrary{datavisualization.formats.functions}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}[]
\datavisualization [
school book axes={unit=0.5},
visualize as smooth line,
x axis={label={$x$},grid,grid={minor steps between steps=1}},
y axis={label={$y$},grid,grid={minor steps between steps=1}},
every major grid/.style = {style={gray, thin}},
every minor grid/.style = {style={gray, very thin}}
]
data [format=function] {
var x : interval [-2:2];
func y = 1/2*(\value x)^2;
}
info' {
\fill[fill=lightgray] (visualization cs: x=1, y=0) -- plot [domain=1:2] (visualization cs: x=\x,y={0.5*(\x)^2}) -- (visualization cs: x=2, y=0) --cycle;
}
;
\end{tikzpicture}
\end{document}
내가 제대로 이해하지 못한 유일한 것은 곡선 아래 영역을 색칠하는 것입니다. info' 블록에서 다음을 시도했습니다.
\fill[fill=lightgray] (visualization cs: x=1, y=0) -- plot [domain=1:2] (visualization cs: x=\x,y={0.5*(\x)^2}) -- (visualization cs: x=2, y=0) --cycle;
그러나 이로 인해 PGF 수학 오류가 발생합니다. 패키지 PGF 수학 오류: '0.5*(1)^2' 입력을 구문 분석할 수 없습니다.
시각화 CS를 사용하도록 플롯 명령에 지시하는 방법이 필요한 것 같습니다.
미리 감사드립니다.
건배
답변1
. visualize as line
그래서 나는 후자의 정의를 에서 복사합니다 tikzlibrarydatavisualization.code.tex
. 유일한 차이점은
every path/.style={draw},
로 변경됩니다
every path/.style={draw,fill},
\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{datavisualization,datavisualization.formats.functions}
\begin{document}
\makeatletter
\tikzdatavisualizationset{
visualize as pie/.style={
new object={
when=after survey,
store=/tikz/data visualization/visualizers/#1,
class=plot handler visualizer,
arg1=#1,
arg2={\tikz@dv@plot@handler,\tikz@dv@plot@mark@maker}
},
new visualizer={#1}{%
every path/.style={draw,fill},
style={every mark/.append style={color=visualizer color}},
mark size=2pt,
semithick,
color=visualizer color,
mark=none,
/tikz/data visualization/every visualize as line/.try,
}{visualizer in legend=\tikz@dv@legend@entry@as@example},
#1={straight line}
},
visualize as pie/.default=pie,
}
\begin{tikzpicture}
\datavisualization[
school book axes={unit=0.5},
x axis={label={$x$},grid,grid={minor steps between steps=1}},
y axis={label={$y$},grid,grid={minor steps between steps=1}},
every major grid/.style={style={gray,thin}},
every minor grid/.style={style={gray,very thin}},
visualize as pie
]
data point[x=-2, y=0]
data[format=function]{var x :interval [-2:2];func y =1/2*(\value x)^2;}
data point[x=2, y=0];
\end{tikzpicture}
\end{document}
답변2
정확히 시각화를 사용하는 것이 아니라 라이브러리를 pgfplots
사용하는 것 입니다 fillbetween
. 이것은 쉬워 보일 것입니다.
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\usetikzlibrary{fillbetween}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}[]
\begin{axis}[
grid=both,
ymin=0,
xmin=-3,xmax=3,
axis on top
]
\addplot[draw=none,name path=A,domain=-2:2,fill=olive!40] {1/2*(x)^2}\closedcycle;
\addplot[solid,thick,red,domain=-2:2] {1/2*(x)^2};
\end{axis}
\end{tikzpicture}
\end{document}
먼저 영역을 채우고 채우기 주변의 선을 피하기 위해 곡선을 그렸습니다. 또한 이 경우 축을 맨 위에 axis on top
유지하는 데 도움이 됩니다 .x
답변3
좌표 계산( \usetikzlibrary{calc}
)을 사용하면 좌표 변환을 수행할 수 있습니다. 불행하게도 나는 이런 종류의 지저분한 변환만을 발견했습니다. 아마도 누군가가 이를 수행하는 더 깔끔한 방법을 게시할 수 있을 것입니다.
info' {
\begin{scope}[shift={(visualization cs:x=0, y=0)},
x={($(visualization cs:x=1, y=0)-(visualization cs:x=0, y=0)$)},
y={($(visualization cs:x=0, y=1)-(visualization cs:x=0, y=0)$)}]
\fill[fill=lightgray] (1,0) -- plot [domain=1:2] (\x,{0.5*(\x)^2}) -- (2, 0) --cycle;
\end{scope}
}