tikz 中的气泡图,其大小取决于固定组定义的值和颜色

tikz 中的气泡图,其大小取决于固定组定义的值和颜色

我想生成具有以下属性的气泡图。

  1. 具有相同 x 坐标的气泡具有相同的颜色。
  2. 气泡的大小取决于数据中指定的值。
  3. 所有气泡的区域均位于图表内部。

编辑

气泡还应具有以下附加属性:

  1. 我可以手动调整每个 x 坐标的颜色。例如,1、5、8 为蓝色;2、3、9 为红色;4、6、7 为灰色。MWE 的 x 坐标数量减少,可以用作最小工作示例。
  2. 气泡的大小取决于数据中指定的值。该数据应以数字形式出现在气泡内。

目前,我有这个最小的工作示例。

\documentclass[tikz,border=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{tikzpicture}
      \begin{axis}[
          xtick=data,
          symbolic x coords = {A,B,C,D},
          symbolic y coords = {1,2,3,4,5},
          ytick distance=1,ymax=5,
          scale only axis,
          xticklabel style={anchor=north,align=center},
          xticklabels={A,B and C,D,E and F},
       ]
      \addplot[%
          scatter=true,
          only marks,
          point meta=explicit,
          fill opacity=0.5,text opacity=1,
          visualization depends on = {2*\thisrow{Val} \as \perpointmarksize},
          scatter/@pre marker code/.append style={
          /tikz/mark size=\perpointmarksize,
         % /tikz/mark options={fill=blue!80!black}
          },
          nodes near coords*,
          nodes near coords style={text=white,font=\sffamily,anchor=center},
      ] table [x={Group},y={Posttest},meta index=2] {
Group  Posttest Val 
A  1  2 
A  2  8 
B  2  15 
B 4 10 
C  2  10 
C 5 3
C 3 12
D  1  4 
D 3 11 
};      
\end{axis}
\end{tikzpicture}
\end{document}

此示例生成以下气泡图:

在此处输入图片描述

在实际示例中,颜色取决于大小,即列的值瓦尔在数据表中,但没有相应的 x 坐标的值。

蓝色气泡的面积3橙色气泡的面积11在图外。

我尝试用 改变颜色,% /tikz/mark options={fill=blue!80!black}但没有效果。 的改变meta index = 2产生了其他气泡,这些气泡没有所需的大小和颜色。

我会非常乐意提供帮助:-)

答案1

完整代码如下:

\documentclass[tikz,border=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{tikzpicture}
      \begin{axis}[
          xtick=data,
          enlargelimits=.1,
          symbolic x coords = {A,B,C,D},
          symbolic y coords = {1,2,3,4,5},
          ytick distance=1,ymax=5,
          scale only axis,
          xticklabel style={anchor=north,align=center},
          xticklabels={A,B and C,D,E and F},
       ]
      \addplot[%
          scatter=true,
          only marks,
          point meta=\thisrow{color},
          fill opacity=0.5,text opacity=1,
          visualization depends on = {2*\thisrow{Val} \as \perpointmarksize},
          visualization depends on = {\thisrow{Val} \as \Val},
          scatter/@pre marker code/.append style={
          /tikz/mark size=\perpointmarksize
         % /tikz/mark options={fill=blue!80!black}
          },
          nodes near coords*={$\pgfmathprintnumber\Val$},
          nodes near coords style={text=white,font=\sffamily,anchor=center},
      ] table [x={Group},y={Posttest}] {
Group  Posttest Val color
A  1  2 .1
A  2  8 .1
B  2  15 .3
B 4 10 .3
C  2  10 .1
C 5 3 .1
C 3 12 .1
D  1  4 .3
D 3 11 .3
};      
\end{axis}
\end{tikzpicture}
\end{document}

结果如下: 在此处输入图片描述

  • 使用enlargelimits(或enlarge x limitsenlarge y limits)来控制轴与数据图的关系,
  • visualization depends on = {\thisrow{Val} \as \Val}与 结合使用nodes near coords*={$\pgfmathprintnumber\Val$}来控制气泡内的文字,
  • 与颜色列结合使用point meta=\thisrow{color},明确选择和匹配颜色。

我希望这有帮助。

相关内容