matlab中画散点图时怎样在每个点上标记符号?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中画散点图时怎样在每个点上标记符号?相关的知识,希望对你有一定的参考价值。

参考技术A 利用text标记在指定位置显示文字
x=rand(1,10)*10;
%因为没有数据,这里用随即数生成10个点的x,y坐标
y=rand(1,10)*10;
L='A','A1','A2','A3','B','B1','B2','B3','C','C1';
%10个标注
plot(x,y,'.');
%画十个点
for
ii=1:10
text(x(ii)+0.1,y(ii)+0.1,Lii);
%利用十个点的坐标添加对应标注
%适当增加一些距离,让文字和点分开会美观一些
end
figure(gcf);

具有不同类别的 Libreoffice 散点图

【中文标题】具有不同类别的 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))。

【讨论】:

以上是关于matlab中画散点图时怎样在每个点上标记符号?的主要内容,如果未能解决你的问题,请参考以下文章

怎样用Eviews画散点图

如何用matlab 画散点图 如何标记数据点的颜色

还在用Excel画散点图?不试试极坐标散点图?

excel绘制散点图时,如何进行分组绘图?

python散点图横坐标文字倾斜

如何根据散点图用MATLAB拟合函数图象?