Indicando ponto em um gráfico com um determinado intervalo

Indicando ponto em um gráfico com um determinado intervalo

Desenhei um gráfico, mas existe uma maneira simples de indicar os pontos em um gráfico quando um intervalo é fornecido

\documentclass{article}
\usepackage[margin=0.7in]{geometry}
\usepackage{tikz}
\def\width{6}
\usepackage{tkz-euclide}
\usepackage{pgfplots}
\def\hauteur{12}

\begin{document}
\begin{figure}[h!]
 \centering
   \begin{tikzpicture}[scale=0.8, transform shape,linecolor/.style={thick,blue!80}linecolor/.style={ultra thick,blue}]
\pgfmathsetmacro{\incrmnt}{1.}
\pgfmathsetmacro{\inc}{5}
  \tikzset{help lines/.style={color=blue!80}}
\draw[thick,step=1cm,help lines] (-2,-2) grid (19,22);
\draw[ultra thick,step=5cm,help lines] (-2,-2) grid (19,22);
\draw[ thin,step=.2cm,help lines,blue!50] (-2,-2) grid (19,22);
% Draw axes
{\foreach \x in {4}
    \foreach \y in {8}
      {
        \draw (\x,\y) circle (0.15cm);
        \fill (\x,\y) circle (0.05cm);
      }}
      {\foreach \x in {6}
    \foreach \y in {10}
      {
        \draw (\x,\y) circle (0.15cm);
        \fill (\x,\y) circle (0.05cm);
      }}
      {\foreach \x in {8}
    \foreach \y in {12}
      {
        \draw (\x,\y) circle (0.15cm);
        \fill (\x,\y) circle (0.05cm);
      }}
      {\foreach \x in {10.1}
    \foreach \y in {14}
      {
        \draw (\x,\y) circle (0.15cm);
        \fill (\x,\y) circle (0.05cm);
      }}
      {\foreach \x in {12.1}
    \foreach \y in {16}
      {
        \draw (\x,\y) circle (0.15cm);
        \fill (\x,\y) circle (0.05cm);
      }}
      {\foreach \x in {14.1}
    \foreach \y in {18}
      {
        \draw (\x,\y) circle (0.15cm);
        \fill (\x,\y) circle (0.05cm);
      }}
      \draw(0,4)--(16,19.78);
       \draw[thick](1,5)--(15,5)--(15,18.8);
\draw[ultra thick,->] (0,0) -- (17,0);
\draw[ultra thick,->] (0,0) -- (0,20);
%% the co-ordinates -- major
\foreach \x in {0,2,...,16} {     % for x-axis
\draw [thick] (\x,0.2) -- (\x,-0.2);
} 
\foreach \y in {0,2,...,19} {   %% for y-axis
\draw [thick] (0.2,\y) -- (-0.2,\y);
}
\node [anchor=north] at (8,21) {{\Large{A graph of $x $ against $\frac{x^2}{y}$}}};
\node [anchor=north] at (0,-0.3) {0};
\node [anchor=east] at (-0.4,13) {\Large{$x$(cm)}};
\node [anchor=south] at (1.9,4.2) {\Large{(2.5,12.5)}};
\node [anchor=south] at (16.2,18.2) {\Large{(37.5,47.0)}};
\node [anchor=south] at (9,-1.5) {\Large{$\frac{x^2}{y}$(cm)}};
\draw[thick](15,5.2)--(14.8,5.2)--(14.8,5);
\node [anchor=north] at (2,-0.3) {5};\node [anchor=north] at (0,-0.3) {0};
\node [anchor=north] at (4,-0.3) {10};\node [anchor=east] at (-0.3,2) {5};
\node [anchor=north] at (6,-0.3) {15};\node [anchor=east] at (-0.3,4) {10};
\node [anchor=north] at (8,-0.3) {20};\node [anchor=east] at (-0.3,6) {15};
\node [anchor=north] at (10,-0.3) {25};\node [anchor=east] at (-0.3,8) {20};
\node [anchor=north] at (12,-0.3) {30};\node [anchor=east] at (-0.3,10) {25};
\node [anchor=north] at (14,-0.3) {35};\node [anchor=east] at (-0.3,12) {30};
\node [anchor=north] at (16,-0.3) {40};\node [anchor=east] at (-0.3,14) {35};
\node [anchor=east] at (-0.3,0) {0};\node [anchor=east] at (-0.3,16) {40};
\node [anchor=east] at (-0.3,18) {45};
\end{tikzpicture}
\end{figure}

\end{document}

Responder1

Acho que o OP pergunta se existe uma maneira mais fácil de traçar os pontos neste gráfico. Se esta for a pergunta, então a resposta é sim: o código abaixo substitui seus seis \foreachloops aninhados para esses pontos pelo loop único sobre uma lista de pontos separados por vírgula:

\foreach \pt in {(4,8), (6,10), (8,12), (10.1,14), (12.1,16), (14.1,18) } {
  \draw \pt circle (0.15cm);
  \fill \pt circle (0.05cm);
}

Mais do que isso, porém, acho que o código do OP é desnecessariamente complicado e que o gráfico resultante é muito difícil de ler. A grade azul de fundo domina o gráfico, então se você realmente deseja isso, recomendo tornar a grade mais suave, reduzindo a insensibilidade da cor de blue!80para blue 30, ou mesmo blue!20. Eu também imprimiria a grade apenas no quadrante positivo para não obscurecer seus rótulos. A linha que atravessa os pontos de dados no OP é fina e, portanto, muito difícil de ler, então eu a tornaria grossa e em vermelho. Finalmente, usando um nodecomando, você pode adicionar os rótulos nos eixos xe yao desenhar as marcas. Isso simplifica significativamente seu código e leva a:

insira a descrição da imagem aqui

Dito isto, não seria mais simplespgfplpots? Como diz noTikZmanual

Se você está procurando uma maneira fácil de criar um gráfico normal de uma função com eixos científicos, ignore esta seção e consulte o pacote pgfplots ou o comando datavisualization da Parte VI.

Usandopgfplpotsa maior parte do esforço vai para o comando do eixo para definir a grade (veja, por exemplo,Grade milimétrica no gráfico PGFPlots). O código simplifica ainda mais e, ignorando os rótulos que restam:

insira a descrição da imagem aqui

Aqui está o código que produz esses dois gráficos:

\documentclass{article}
\usepackage[margin=0.7in]{geometry}
\usepackage{tikz}
\def\width{6}
\usepackage{tkz-euclide}
\usepackage{pgfplots}
\def\hauteur{12}

\begin{document}

\begin{figure}[h!]
  \centering
  \begin{tikzpicture}[scale=0.8, transform shape,
      help lines/.style={color=blue!30}]
    \foreach \step/\thick in {5cm/ultra thick, 1cm/thick, 2mm/thin} {
      \draw[\thick,step=\step,help lines] (0,0) grid (17,20);
    }
    % Draw axes
    \draw[thick,->] (0,0) -- (17,0);
    \draw[thick,->] (0,0) -- (0,20);
    \foreach \x [evaluate=\x as \X using {int(2.5*\x)}] in {0,2,...,16} {     % for x-axis
        \draw[thick] (\x,0.2) -- ++(0,-0.4)node[below]{$\X$};
    }
    \foreach \y [evaluate=\y as \Y using {int(\y*2.5)}] in {0,2,...,19} {   %% for y-axis
        \draw[thick] (0.2,\y) -- ++(-0.4,0) node[left]{$\Y$};
    }
    % draw points
    \draw[red,thick](0,4)--(16,19.78);
    \foreach \pt in {(4,8), (6,10), (8,12), (10.1,14), (12.1,16), (14.1,18) } {
      \draw \pt circle (0.15cm);
      \fill \pt circle (0.05cm);
    }
    \draw[thick](1,5)--(15,5)--(15,18.8);
    \draw[thick](15,5.2)--(14.8,5.2)--(14.8,5);
    % labels
    \node [anchor=north] at (8,21) {\Large A graph of $x $ against $\frac{x^2}{y}$};
    \node [anchor=east] at (-0.4,13) {\Large{$x$(cm)}};
    \node [anchor=south] at (1.9,4.2) {\Large{(2.5,12.5)}};
    \node [anchor=south] at (16.2,18.2) {\Large{(37.5,47.0)}};
    \node [anchor=south] at (9,-1.5) {\Large{$\frac{x^2}{y}$(cm)}};
  \end{tikzpicture}
\end{figure}

\begin{figure}[h!]
  \centering
  \begin{tikzpicture}[scale=2]
    \begin{axis}[
        xmin=-0.2,
        xmax=40,
        ymin=-0.2,
        ymax=45,
        minor x tick num=9,
        minor y tick num=9,
        xtick distance=5,
        ytick distance=5,
        grid=both,
        grid style={help lines},
        major grid style={blue!30, thick},
        minor grid style={blue!30,thin},
        axis line style={thick, blue!50},
      ]
      \addplot[red, thick, domain=0:40] plot (\x, x+10);
      \addplot[mark=o] coordinates {
        (10,20) (15,25) (20,30) (25.25,35) (30.25,40) (35.25,45)
      };
    \end{axis}
  \end{tikzpicture}
\end{figure}

\end{document}

Com essas mudanças em vigor

informação relacionada