Libreoffice 散点图 类

Libreoffice scatterplot with different classes

我想绘制一些二维点,但每个点都属于一个 class。 在做散点图时,我希望每个 class 都用不同的颜色或符号绘制,这样我就可以区分它们(理想情况下我还想控制我分配给每个 class 的颜色和符号)

这是我的数据

这是我的散点图:

这就是我想要的(无需手动创建新数据系列)

对于颜色,使用气泡图并设置 Fill Color data range。显然,Scatter 无法做到这一点。

为了说明,请从以下数据开始。最后一行气泡尺寸较大的原因是为了使所有其他气泡相对较小,如 https://peltiertech.com/Excel/Charts/ControlBubbleSizes.html 中所述。

X       Y       Class   Color       Bubble Size
0.10    0.10    1       255         1
0.11    0.10    1       255         1
0.10    0.12    1       255         1
0.11    0.11    1       255         1
0.20    0.20    2       16711680    1
0.21    0.20    2       16711680    1
0.20    0.22    2       16711680    1
0.21    0.21    2       16711680    1
0.15    0.15    3       16776960    1
0.16    0.15    3       16776960    1
0.16    0.15    3       16776960    1
0.15    0.16    3       16776960    1
0.20    0.05    0       0           100

Select A1 到 B14,然后转到 插入 -> 图表 -> 气泡图 。按下一步,下一步。设置这些范围。

Fill Color    $Sheet1.$D:$D
Bubble Sizes  $Sheet1.$E:$E
X-Values      $Sheet1.$A:$A
Y-Values      $Sheet1.$B:$B

按下一步,勾选显示网格:X轴,取消勾选显示图例。最后,按完成。

现在需要隐藏大黑泡。为此,双击图表,然后右键单击气泡。按住 Shift 可能更容易 select 单个气泡。

选择格式化数据点,按None,然后确定。

最后一个改进是为每个 class 的颜色设置一个 table。在 G1 到 H4 中添加以下数据。

Class   Color
1       =COLOR(0,0,255)
2       =COLOR(255,0,0)
3       =COLOR(255,255,0)

然后将D2的公式设置为=VLOOKUP(C2,G:H,2)并向下填充到D13。 (D14可以只留0,也就是黑色)

气泡图似乎不允许图标使用不同的符号。因此,如果需要使用不同的符号,可能需要使用散点图和 format each data point manually,或者为每个 class.

使用一个系列

对于大量数据,宏可能可以做到这一点。 Post 如果您想尝试此操作并卡住,请在此论坛上提问,因为我对格式化图表的宏有一些经验。

您需要将 Y 数据系列放在不同的列中,每个分组值一个。

接受的答案非常出色地作为我需要为连续数据生成彩色散点图的起点,而不是 OP 要求的不同 classes 中的数据。我有一个模型的 3 列 table 行进价、跌幅和似然值,我想像这样绘制它们,其中每个点的颜色由似然值决定:

为此,需要对已接受的答案进行一项添加和两项修改:

  • 添加 4 列(或更好,5 列 -- 请参阅下面的编辑*)颜色查找-table,也许在单独的 sheet 上,第一列是颜色索引号 (0, 1, 2, ... N) 和接下来的三列给出 [0..255] 范围内的红色、绿色和蓝色颜色值,用于每种颜色; select 这个 table 和 give it a name like "colortable". N here stands for the maximum color index of your table (the total number of colors is N+1); often N will be 255 as it is in my example, but it can be smaller if you don't need so many colors. For the RGB values to use, I have tools to generate different color "ramps" such as "pseudocolor" (used in my example), "temperature", etc; if you don't have such tools already, there are online generators and desktop tools.
  • 将接受答案中的“class”列修改为[0..N]范围内的颜色索引值;最简单的方法是通过将颜色索引计算为 INT(N * (datavalue - MIN(datavalues)) / (MAX(datavalues) - MIN(datavalues)) 在整个颜色范围内线性“拉伸”数据值。对于我的数据,对于 C 列中的似然值,我使用了这个公式(对于 D 列中的第 2 行):=INT(255*(C2-MIN(C:C))/(MAX(C:C)-MIN(C:C) )).
  • 修改“颜色”列以使用 three 组成颜色(或者更好,只是 one -- 请参阅下面的编辑*) lookups into the color lookup table,对红色、绿色和蓝色分量中的每一个进行一次查找。在我的示例中,使用 D 列中的颜色索引,第 2 行中颜色的公式为:=COLOR(VLOOKUP(D2, colortable, 2), VLOOKUP(D2, colortable, 3 ), VLOOKUP(D2, 颜色table, 4)).

将新公式复制到所有数据行中,瞧!

*编辑注意: 进一步思考,在颜色查找 table 中包含第五列更有效,您可以在其中计算该列的颜色索引(例如,table 的 =COLOR(B1, C1, D1),索引在 A 列,RGB 值在 B、C 和 D 列);将第五列包含在命名范围“colortable”中,然后只需要一个 single VLOOKUP 来获取每个数据值的颜色(例如,=VLOOKUP(D2 , 颜色table, 5)).