具有不同类别的 Libreoffice 散点图
Posted
技术标签:
【中文标题】具有不同类别的 Libreoffice 散点图【英文标题】:Libreoffice scatterplot with different classes 【发布时间】:2017-11-10 14:56:18 【问题描述】:我想要绘制一些 2D 点,但每个点都属于一个类。 在做散点图时,我希望每个类都用不同的颜色或符号绘制,这样我就可以区分它们(理想情况下,我还想控制分配给每个类的颜色和符号)
这是我的数据
这就是我的散点图:
这就是我想要的(无需手动创建新数据系列)
【问题讨论】:
【参考方案1】:对于颜色,使用气泡图并设置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
选择 A1 到 B14 并转到 插入 -> 图表 -> 气泡。按下一步,下一步。设置这些范围。
Fill Color $Sheet1.$D$1:$D$14
Bubble Sizes $Sheet1.$E$1:$E$14
X-Values $Sheet1.$A$1:$A$14
Y-Values $Sheet1.$B$1:$B$14
按下一步,选中显示网格:X 轴,然后取消选中显示图例。最后,按完成。
现在需要隐藏黑色的大气泡。为此,请双击图表,然后右键单击气泡。按住 Shift 可能更容易选择单个气泡。
选择格式化数据点,按无,然后确定。
最后一个改进是为每个类别的颜色设置一个表格。在 G1 到 H4 中添加以下数据。
Class Color
1 =COLOR(0,0,255)
2 =COLOR(255,0,0)
3 =COLOR(255,255,0)
然后将 D2 的公式设置为 =VLOOKUP(C2,G$2:H$4,2)
并向下填充到 D13。 (D14可以只留0,也就是黑色)。
似乎气泡图不允许图标使用不同的符号。所以如果需要使用不同的符号,可能需要使用散点图和format each data point manually,或者为每个类使用一个系列。
对于大量数据,宏可能可以做到这一点。如果您想尝试此操作并遇到困难,请在此论坛上发布问题,因为我对格式化图表的宏有一些经验。
【讨论】:
太棒了。必须添加最后一行确实很痛苦,但很有效。一项更正,在 Vlookup 公式中,C2
必须是 C$2
。
很高兴听到它有效。我不明白为什么它应该是C$2
。这使得所有行都从第二行查找类,而不是从它们自己的行查找类。
没错,我的错
超清晰的答案。看看我是如何将其扩展为 plot continuous data values 而不是分类数据。【参考方案2】:
您需要将 Y 数据系列放在不同的列中,一个用于每个分组值。
【讨论】:
【参考方案3】:接受的答案作为我需要为连续数据生成彩色散点图的起点非常出色,而不是 OP 要求的不同类中的数据。我有一个模型中的 Strike、Dip 和 Likelihood 值的 3 列表,并希望像这样绘制它们,其中每个点的颜色由似然值确定:
为此,需要对已接受的答案进行一项添加和两项修改:
添加一个 4 列(或更好的 5 列 -- 参见下面的编辑*)颜色查找表,可能在单独的工作表上,第一列是颜色索引号(0、1、2、. .. N) 和接下来的三列给出 [0..255] 范围内的红色、绿色和蓝色颜色值,用于每种颜色;选择这个表和give it a name,比如“colortable”。这里的N代表你的表的最大颜色索引(颜色总数为N+1);在我的示例中,N 通常为 255,但如果您不需要这么多颜色,它可以更小。对于要使用的 RGB 值,我有生成不同颜色“斜坡”的工具,例如“伪色”(在我的示例中使用)、“温度”等;如果你还没有这样的工具,有onlinegenerators和桌面tools。 将已接受答案中的“类”列修改为 [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) ))。 修改“颜色”列以使用 三个(或者更好,只是 一个 -- 请参阅下面的编辑*)查找颜色查找表来组成颜色,一个查找每个红色、绿色和蓝色组件。在我的示例中,使用 D 列中的颜色索引,第 2 行中颜色的公式为: =COLOR(VLOOKUP(D2, colortable, 2), VLOOKUP(D2, colortable, 3), VLOOKUP(D2, colortable, 4) )。将新公式复制到所有数据行中,瞧!
*编辑注意: 进一步思考,在颜色查找表中包含第五列会更有效,您可以在其中计算该索引的颜色(例如,=COLOR(B1, C1, D1) 用于在 A 列中具有索引且在 B、C 和 D 列中具有 RGB 值的表);将这第五列包含在命名范围“colortable”中,然后只需要一个单个 VLOOKUP 来获取每个数据值的颜色(例如,=VLOOKUP(D2, colortable, 5))。
【讨论】:
以上是关于具有不同类别的 Libreoffice 散点图的主要内容,如果未能解决你的问题,请参考以下文章