Given some data from a file, I would like to use the first two columns as coordinates, and the second two columns as label for every point. The data is given in this form:

x                        y                        labela                   labelb
1.416197036356566059e+02 5.144315570548267715e+03 7.000000000000000000e+00 1.000000000000000000e+00

I use the table command to read the first two columns as data:

        \addplot+[only marks,x=x, y=y, ] table {DataTable.dat};

The data of the second column should appear above each scatter point as simple text or may be in a bubble like this: labela / labelb.

A promising option seems to be the option nodes near coords which I use to show the y-coordinate of points in other plots, but I don't see how I can use the data from the file and combine it with that.

1 Answer 1


nodes near coords is the right approach. You can make your two label columns available inside the label nodes using the key visualization depends on=\thisrow{<column name>} \as \<macro name>. The key can be called as often as you like.

Then, you can typeset the labels using nodes near coords=\pgfmathprintnumber{\<macronameA>} / \pgfmathprintnumber{\<macronameB>}. The styles for the label nodes can be set using every node near coord/.append style=<styles>.

Note that the label nodes will not automatically increase the axis limits, so they might overlap the axes. In that case, you'll need to use enlargelimits or enlarge y limits.



x                        y                        labela                   labelb
1.416197036356566059e+02 5.144315570548267715e+03 7.000000000000000000e+00 1.000000000000000000e+00
2.416197036356566059e+02 3.144315570548267715e+03 8.000000000000000000e+00 4.000000000000000000e+00
4.416197036356566059e+02 1.144315570548267715e+03 6.000000000000000000e+00 2.000000000000000000e+00
    \begin{axis}[enlarge y limits={upper,value=0.3}]
            only marks,
            visualization depends on=\thisrow{labela} \as \labela,
            visualization depends on=\thisrow{labelb} \as \labelb,
            nodes near coords=\pgfmathprintnumber{\labela}/\pgfmathprintnumber{\labelb},
            every node near coord/.append style={
                inner sep=1pt,
            ] table {DataTable.dat};

  • Excellent, this works almost perfectly. Only, have you any idea how to change the style of the labels? If I do every node near coord/.append style={font={\tiny}} it changes only the size of the divisor symbol /, but the font size of \labela and \labelb remains unchanged.
    – Ingo
    Apr 16, 2012 at 7:48
  • @tehingo: I can't reproduce that, both the labels and the divisor symbol are reduced in size if I add the key. Can you edit your question to show your code and output?
    – Jake
    Apr 16, 2012 at 10:02

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .