Recortar corretamente no Tikz?

Recortar corretamente no Tikz?

Com a incrível ajuda desta comunidade, fiz o desenho abaixo há alguns meses. Naquela época, fiquei muito feliz com isso; mas com o passar do tempo, quero que minhas figuras fiquem cada vez melhores. Como você pode ver na imagem, algumas linhas ultrapassam a margem dos eixos; e é claro que quero evitar isso. Tenho visto nesta comunidade que a resposta é usar a \clipopção TikZ. Eu verifiquei oDocumentação TIkZe já estou brincando com essa opção há algum tempo, mas sem sucesso algum. Alguém sabe como forçar essas linhas a ficarem dentro dos eixos definidos pelo gráfico? A imagem está abaixo:

O MWE que gera tal imagem é o seguinte:

\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}

E a imagem é:

insira a descrição da imagem aqui

Então, minha pergunta é:como faço para forçar as linhas a permanecerem dentro do gráfico?

BÔNUS: Alguém sabe o que está gerando as anormalidades da grade vertical (linha pontilhada cinza)?

PS: Estou ciente de que o código da figura provavelmente pode ser melhorado; Acabei de usar outras figuras que tive para criar esta porque sou novo no TikZ. Além disso, pode parecer uma duplicata, mas não acho que seja porque não encontrei nenhuma maneira de usar adequadamente a \clipopção para obter o que desejo.

EDITAR: Como tenho várias figuras com o mesmo problema; Eu realmente aprecio soluções gerais; embora qualquer ajuda seja, obviamente, muito apreciada.

Muito obrigado a todos pelo seu tempo!

Responder1

Você deve clipantes de desenhar definir o recorte dentro de um escopo, a menos que queira aplicá-lo ao resto da figura. Neste caso, mova suas funções dentro de um escopo como:

\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}

insira a descrição da imagem aqui

informação relacionada