来自数据的彩色圆圈

来自数据的彩色圆圈

我有一个数据文件,它提供了 x 位置 ( xpos)、半径和颜色。我希望绘制一个(xpos,0)具有适当半径和颜色的圆。我该如何实现?

我使用了两种方法。第一种方法是基于\addplot table,我可以使用 获得所需的颜色meta。这种方法的问题是正确的圆圈大小。

\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{filecontents}
\pgfplotsset{compat=newest}

\begin{filecontents}{data.out}
xpos    radius  color
0       1        2
1       3        4
2       5        6
3       7        8
4       11      12
5       13      14
\end{filecontents}

\begin{document}
\begin{tikzpicture}

  \begin{axis}[
    colorbar,
    ]

    \pgfplotstableread{data.out}\datatable

    \addplot+[scatter,only marks,mark=*,point meta=explicit] table [x index={0},y expr=0,meta
    index={2}] \datatable;    

\end{axis}  

\end{tikzpicture}    
\end{document}

在另一种方法中,我尝试了循环和 pg​​fplotstable,它们可以正确显示圆圈大小。这种方法的问题在于圆圈的正确着色。我也不知道如何正确放置和缩放轴。如果我将命令\draw放在轴环境中,则不会绘制任何内容。

\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{filecontents}
\pgfplotsset{compat=newest}

\begin{filecontents}{data.out}
%xpos    radius  color
0       1        2
1       3        4
2       5        6
3       7        8
4       11      12
5       13      14
\end{filecontents}

\begin{document}
  \newcommand{\myxpos}{}
  \newcommand{\myrad}{}
  \newcommand{\mycolor}{}
\begin{tikzpicture}

  \pgfplotstableread{data.out}\datatable

    \pgfplotstablegetrowsof{\datatable}  
    \pgfmathparse{\pgfplotsretval-1}  
    \pgfplotsinvokeforeach{1,...,\pgfmathresult} {
      \pgfplotstablegetelem{#1}{0}\of\datatable 
      \pgfmathsetmacro{\myxpos}{\pgfplotsretval}

      \pgfplotstablegetelem{#1}{1}\of\datatable 
      \pgfmathsetmacro{\myrad}{\pgfplotsretval}

      \pgfplotstablegetelem{#1}{2}\of\datatable 
      \pgfmathsetmacro{\mycolor}{\pgfplotsretval}
      \draw[thick] (\myxpos,0) circle [radius=\myrad];
    }

  \begin{axis}[
    anchor=origin,
    colorbar,
    xmin=-10,
    xmax=-20,
    ymin=-15,
    ymax=15,
    ]

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

我认为这里的一个问题是\draw circle仅可用作tikz命令,而 中没有对应命令pgfplots。这禁止 中可用的许多简单颜色操作pgfplots

这是使用和“matlab2tikz”创建的所需输出matlab所需结果,使用 matlab 和 matlab2tikz 创建

答案1

这就是为什么您需要使用visualization depends on键及其变体(手册对这一点说得很清楚)以及正确的标记类型:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[ymin=-1,ymax=1,
  colorbar,
  visualization depends on=\thisrow{radius}\as\myrad,
  scatter/@pre marker code/.append style={/tikz/mark size=\myrad cm},
  clip marker paths=true
]
\pgfplotsextra{\show\pgfplotsunitxlength}
\addplot+[scatter,only marks,mark=o,point meta=explicit,ultra thick]
    table [x index={0},y expr=0,meta index={2}]
{
xpos    radius  color
0       1        2
1       3        4
2       5        6
3       7        8
4       11      12
5       13      14
};    
\end{axis}  
\end{tikzpicture}    
\end{document}

在此处输入图片描述

相关内容