Tikz에서 제대로 클리핑되나요?

Tikz에서 제대로 클리핑되나요?

이 커뮤니티의 놀라운 도움으로 몇 달 전에 아래 그림을 그렸습니다. 그때 나는 그것에 매우 만족했습니다. 하지만 시간이 지날수록 내 모습이 점점 더 좋아 보이길 원합니다. 그림에서 볼 수 있듯이 일부 선은 축의 여백을 초과합니다. 물론 나는 그것을 피하고 싶습니다. 나는 이 커뮤니티에서 의 \clip옵션을 사용하는 것이 답이라는 것을 보았습니다 TikZ. 나는TIkZ 문서나는 한동안 그 옵션을 사용해 왔지만 전혀 성공하지 못했습니다. 플롯에 의해 정의된 축 내부에 해당 선을 강제로 고정하는 방법을 아는 사람이 있습니까? 사진은 아래와 같습니다:

이러한 그림을 생성하는 MWE는 다음과 같습니다.

\documentclass[]{standalone}
% PACKAGES LOADING
\usepackage[dvipsnames]{xcolor} % To get many colours.
\usepackage{amsmath, mathtools, amsthm, mathrsfs, amssymb} % MATH Packages
\usepackage{tikz} % To plot almost everything.
% TIKZ SETTING
\usetikzlibrary{fit, calc, matrix, positioning, arrows.meta, intersections, through, backgrounds, patterns}

\begin{document}
\begin{tikzpicture}[my plot/.style={thick, smooth, samples=100, domain=0:1}, my grid/.style={densely dotted,opacity=0.5, every node/.style={black,opacity=1},}, my axis/.style={latex-latex}, scale=1.5]
\draw[thick, smooth,color=Red,] (0,1) -- (1,1);
\draw[thick, smooth,color=Green,] (0,1.5) -- (1,1.5);
\draw[my plot, color=Blue] (0,0) plot (\x,{(3*\x)});
\coordinate (start plot) at (0,{(0)});
\coordinate (end plot) at (1.5,{(4)});
\draw[my plot, color=Orange, shift={(0,3)},] (0,0) plot (\x,{(-3*\x)});
\draw[my axis] ([shift={(-0cm,0cm)}]start plot |- end plot) node[above] {$H_1$} |- node[coordinate](origin){} ([shift={(0cm,-0cm)}]start plot -| end plot) node[right] {$q$};
\def\x{0.5}\def\y{4}\def\p{0.55}
\coordinate (a) at (0.0,{(0.0)});
\coordinate (b) at (1,{(3)});
\coordinate (c) at (0,{(1)});
\coordinate (d) at (0,{(1.5)});
\coordinate (e) at (1,{(1)});
\coordinate (f) at (1,{(1.5)});
\coordinate (g) at (1,{(0.25)});
\coordinate (h) at (1,{(2.75)});
\draw[my grid] (a) |- node[below,font=\scriptsize]{$0$} (origin) |- node[left,font=\scriptsize]{$0$} cycle;
\draw[my grid] (b) |- node[below,font=\scriptsize]{$1$} (origin) |- node[left,font=\scriptsize]{$3$} cycle;
\draw[my grid] (c) |- node[left,font=\scriptsize]{$1$} cycle;
\draw[my grid] (d) |- node[left,font=\scriptsize]{$1.5$} cycle;
\draw[my grid] (e) |- node[right,font=\scriptsize]{$\textcolor{Red}{H_1(B,q)=1}$} cycle;
\draw[my grid] (f) |- node[right,font=\scriptsize]{$\textcolor{Green}{H_1(\sigma_1,q)=1.5}$} cycle;
\draw[my grid] (g) |- node[right,font=\scriptsize]{$\textcolor{Orange}{H_1(M,q)=3(1-q)}$} cycle;
\draw[my grid] (h) |- node[right,font=\scriptsize]{$H_1(T,q)=3q$} cycle;
\clip(0,0) rectangle (1.5,4);
\end{tikzpicture}
\end{document}

그리고 사진은 다음과 같습니다.

여기에 이미지 설명을 입력하세요

그렇다면 내 질문은 다음과 같습니다.선을 플롯 내부에 유지하려면 어떻게 해야 합니까?

보너스: 수직 격자(회색 점선)의 이상 현상이 발생하는 원인을 아는 사람이 있습니까?

추신: 그림의 코드가 개선될 수 있다는 것을 알고 있습니다. 저는 TikZ를 처음 접했기 때문에 이 피규어를 만들어야만 했던 다른 피규어를 사용했습니다. 또한 중복처럼 보일 수도 있지만 \clip원하는 것을 얻기 위해 옵션을 제대로 사용할 방법을 찾지 못했기 때문에 그렇다고 생각하지 않습니다.

편집하다: 동일한 문제가 있는 그림이 여러 개 또는 여러 개 있기 때문에; 일반적인 솔루션에 정말 감사드립니다. 어떤 도움이라도 물론 크게 감사하겠습니다.

시간 내주셔서 정말 감사드립니다!

답변1

clip그림의 나머지 부분에 적용하려는 경우가 아니면 그리기 전에 범위 내에서 클리핑을 정의하고 정의 해야 합니다 . 이 경우 다음과 같은 범위 내로 함수를 이동하세요.

\begin{scope}
\clip (0,0) rectangle (1,3);
\draw[my plot, color=Orange, shift={(0,3)},] (0,0) plot (\x,{(-3*\x)});
\draw[my plot, color=Blue] (0,0) plot (\x,{(3*\x)});
\end{scope}

여기에 이미지 설명을 입력하세요

관련 정보