来自不同文件的散点图的字符串注释

来自不同文件的散点图的字符串注释

我正在尝试调整设置以在这个问题. 名称位于不同文件中的情况。主要动机是让多个图具有相同的名称,并且能够在不更改数据文件的情况下更改它们。

我尝试使用该方法从中添加一列这个问题并生成以下代码。我收到以下错误:

! Missing $ inserted.
<inserted text> 
                $

我无法解释。该怎么做?

\begin{tikzpicture}
  \pgfplotstableset{
    create on use/names/.style={
        create col/copy column from table={names.dat}{names}
      }
  }
    \begin{axis}[
    visualization depends on={value \thisrow{names} \as \labela},
    nodes near coords={\labela},
        ]

    \addplot[scatter,only marks] table [x expr=\thisrowno{0},y expr=\thisrowno{1}] {data.dat};


    \end{axis}
\end{tikzpicture}

数据.dat:

1 1
2 4
3 7

名称.dat:

Xyzzy
Plugh
Sheng

答案1

不幸的是,这不能直接起作用,因为create on use不能很好地发挥\thisrow{<name>}功能。我认为最好的办法是:

  1. 将表读data.dat入临时表宏。
  2. 向表中添加标签列。
  3. 使用将修改后的表写入临时文件\pgfplotstablesave

(当然,这些步骤可以包含在一个方便的宏中)

此后,您可以names按照您尝试的方式访问该列:

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots,pgfplotstable, filecontents}

\begin{filecontents*}{data.dat}
1 1
2 4
3 7
\end{filecontents*}
\begin{filecontents*}{names.dat}
labels
Xyzzy
Plugh
Sheng
\end{filecontents*}

\pgfplotstableread{data.dat}\datatable
\pgfplotstablecreatecol[outfile=temptable,create col/copy column from table={names.dat}{labels}]{names}\datatable
\pgfplotstablesave{\datatable}{temptable}
\begin{document}


\begin{tikzpicture}
\begin{axis}[
    visualization depends on=value\thisrow{names}\as\labela,
    nodes near coords=\labela,
]

    \addplot[scatter,only marks] table [x expr=\thisrowno{0},y expr=\thisrowno{1}] {temptable};


    \end{axis}
\end{tikzpicture}
\end{document}

相关内容