
Estou usando tikz
para recriar a seguinte imagem
O que estou tentando fazer é desenhar uma forma trapezoidal "estendida" e "suave". Meu código é
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
%axes
\draw[very thick] (0,0)--(8,0);
\draw[very thick] (0,0)--(0,5) coordinate (y);
\draw (8,0) node[below] {\eng{Energy}};
\node [draw=none,rotate=90, yshift=0.3cm] at (0,5) {\eng{Counts}};
%1st peak
\draw[thick,blue] (7.3,0)--(7,3)--(5,4)--(4.7,0);
\draw[blue,dashed] (7,0)--(7,3);
\draw[blue,dashed] (5,4)--(5,0);
\draw[blue] (7,3) node[above,right] {$4$};
\draw[blue] (5,4) node[above,left] {$3$};
\draw[blue] (6,4.5) node[above] {$\delta E$};
%2nd peak
\draw[thick,red] (3.3,0) -- (3,2.5) -- (1,3.5) -- (0.7,0);
\draw[red,dashed] (3,0)--(3,2.5);
\draw[red,dashed] (1,0)--(1,3.5);
\draw[red] (3,2.5) node[above,right] {$1$};
\draw[red] (1,3.5) node[above,left] {$2$};
\draw[red] (2,4.5) node[above] {$\delta E$};
\end{tikzpicture}
\end{document}
e minha saída é
O que eu gostaria de fazer é tornar os ângulos 1,2,3,4 mais suaves. Também gostaria de deixar um pouco mais suave, como ter uma pequena cauda - as linhas vermelhas e azuis que tocam o eixo x. Como isso pode ser alcançado?
Responder1
Não tenho certeza do que você quer dizer com "estender as duas linhas perpendiculares às linhas do eixo x", mas pelo menos desenhar uma linha suave pode ser conseguido com curvas de Bézier.
Em uma linha reta como (a) -- (b)
você pode adicionar (múltiplos) pontos de controle x para criar uma curva suave com(a) .. controls (x) .. (b)
(Tirado deaqui)
EDITAR: Obrigado por editar sua pergunta :) deixe-me revisar minha resposta ...
Na verdade, existe um modificador "suave" para plotagem. Além disso, adicionei outra coordenada no final e no início e aumentei o valor y das coordenadas vizinhas:
\draw[thick, green] plot [smooth] coordinates {(3.5,0) (3.3,0.5) (3,2.5) (1,3.5) (0.7,0.5) (0.5,0)};
Para comparação, a resposta de Harish Kumar (ambas sobrepostas em verde), também com dois nós adicionais para obter suavização ao longo do eixo x.
\draw[thick,green, rounded corners=4mm ] (7.7,0) -- (7.3,0)--(7,3)--(5,4)--(4.7,0) -- (4.3,0);
Responder2
Você pode usar rounded corners
:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
%axes
\draw[very thick] (0,0)--(8,0);
\draw[very thick] (0,0)--(0,5) coordinate (y);
\draw (8,0) node[below] {Energy};
\node [draw=none,rotate=90, yshift=0.3cm] at (0,5) {Counts};
%1st peak
\draw[thick,blue,rounded corners=4mm] (7.3,0)--(7,3)--(5,4)--(4.7,0);
\draw[blue,dashed] (7,0)-- node[pos=1.1,above,right] {$4$}(7,2.6);
\draw[blue,dashed] (5.1,0)-- node[pos=1.1,above,left] {$3$}(5.1,3.7);
\draw[blue] (6,4.5) node[above] {$δE$};
%2nd peak
\draw[thick,red,rounded corners=4mm] (3.3,0) -- (3,2.5) -- (1,3.5) -- (0.7,0);
\draw[red,dashed] (2.9,0)-- node[pos=1.1,above,right] {$1$}(2.9,2.3);
\draw[red,dashed] (1.1,0)-- node[pos=1.1,above,left] {$2$}(1.1,3.25);
\draw[red] (2,4.5) node[above] {$δE$};
\end{tikzpicture}
\end{document}
Também fiz algumas simplificações no código para os nós 1, 2, 3 e 4.