2

I am creating a graph where a node is placed. I would like to display the coordinates of that node on the axes without manually entering them.

I get Tikz to retrieve those coordinates using let but then the coordinates are stored in TeX points instead of the original number. Is there a way for me to display it "nicely"?

Here the MWE:

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
    \begin{tikzpicture}
    \draw [help lines] (0,0) grid (4,4);
    \coordinate (origin) at (0,0);
    \node[circle,fill]  (d1) at (3,2) {};

    \draw[red,thick] let    \p{1} = (d1)    in (d1|- origin) node[label=below:$\x1$]{} --  (d1) --  (d1 -| origin) node[label=left:\y1]{} ;

    \end{tikzpicture}
\end{document}

which generates this: enter image description here

I would instead like the numbers to read 2 and 3 on the vertical and horizontal axes respectively.

Should I use something like \pgfmathparse? I feel like TeX probably knows the value of 56.90549pt.

Peutch
  • 2,182
  • It is similar to this question: https://tex.stackexchange.com/questions/243578/coordinate-transformations-pgfplots-to-and-from-pgf but I do not use pgfplots. – Peutch Jun 01 '18 at 21:17

1 Answers1

5

You can use a manual conversion

\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\begin{document}
    \begin{tikzpicture}
    \draw [help lines] (0,0) grid (4,4);
    \coordinate (origin) at (0,0);
    \node[circle,fill]  (d1) at (3,2) {};

    \draw[red,thick] let    \p{1} = (d1)    in (d1|- origin)
        node[label=below:\pgfmathparse{int(round(\x1/28.45274))}$\pgfmathresult$]{} --  (d1)
        --  (d1 -| origin) 
        node[label=left:\pgfmathparse{int(round(\y1/28.45274))}$\pgfmathresult$]{} ;
   \end{tikzpicture}
\end{document}

enter image description here

percusse
  • 157,807
  • Thank you! If I need to do this many times in a graph, is there a way to define a function that does this conversion? – Peutch Jun 01 '18 at 22:45
  • 2
    @Peutch Define a custom style mylabel/.style 2 args={label=#1:\pgfmathparse{ int(round(#2/28.45274))}$\pgfmathresult$} then you can use mylabel={left}{\x1} etc. – percusse Jun 01 '18 at 23:00