如何在使用 r 中的符号()命令更新散点图后添加图例

Posted

技术标签:

【中文标题】如何在使用 r 中的符号()命令更新散点图后添加图例【英文标题】:How to add a legend after updating a scatter plot with the symbols() command in r 【发布时间】:2018-10-16 21:37:10 【问题描述】:

我使用以下数据在 R 中创建了气泡图/散点图:

View my_data_set

以下代码:

my_data_set <- read.csv("c:/Users/Person/Desktop/my_data_set.csv")

View(my_data_set)

plot(my_data_set$Analysis_Vs_Presentation, my_data_set$Flexibility)

IScolors <- c("#e6f598", "#66c2a5")

TypeLevels <- as.numeric(my_data_set$Type)

symbols(my_data_set$Analysis_Vs_Presentation, my_data_set$Flexibility, circles=sqrt(my_data_set$Easiness), inches=0.8, bg = IScolors[TypeLevels], fg="black", xlab="Presentation", ylab="Flexibility", main="Comparison of 5 Data Analytics Tools", xlim=c(0, 11), ylim=c(0, 11))

text(my_data_set$Analysis_Vs_Presentation, my_data_set$Flexibility, my_data_set$Tool, cex=1)

这给了我一个气泡图散点图,其中包含不同大小的气泡,具体取决于 Easiness 的值,以及气泡颜色取决于 Type 的值。

我想添加一个图例来显示气泡颜色的含义。我试过用这个:

legend("bottomright", legend=my_data_set$Type, col=IScolors, cex=0.75)

并且在右下角显示了一个图例,但它只列出了 Type 属性的 5 个值。

我如何要求它显示列出 Type 属性的 2 个不同值以及图表中使用的相关颜色的内容?

更新:克里斯 - 在我尝试了你的建议后,我看到了一个图例,但它显示了所有 5 个值,而不仅仅是 2 个不同的值:

screenshot of plot with added legend

【问题讨论】:

【参考方案1】:

好的,我不厌其烦地重新创建了您的代码,看看它是如何工作的。这是解决方案——很简单,如果你所追求的只是这两种类型的两种颜色,对吧?这实际上是您的代码;更改的位如下:

df <- data.frame(
  Tool = c("R", "GGPlot2", "Tableau", "D3", "Excel"),
  Flex = c(6,8,7,10,2),
  Type = c("static", "static", "interactive", "interactive", "static"),
  Easi = c(6,5,10,1,7),
  Ana_v_Pres = c(1,2,5,10,3)
)
View(df)

plot(df$Ana_v_Pres, df$Flex)
IScolors <- c("#e6f598", "#66c2a5")
TypeLevels <- as.numeric(df$Type)
symbols(df$Ana_v_Pres, df$Flex, circles=sqrt(df$Easi), inches=0.8, 
    bg = IScolors[TypeLevels], fg="black", xlab="Presentation", 
    ylab="Flexibility", main="Comparison of 5 Data Analytics Tools", 
    xlim=c(0, 11), ylim=c(0, 11))

text(df$Ana_v_Pres, df$Flex, df$Tool, cex=1)

现在进行更改:只需定义要在图例键中显示的两个标签并为其分配 colfill 参数:

legend("bottomright", c("static", "interactive"), col=IScolors, fill=IScolors, cex=0.75)

【讨论】:

或者,这也可以:legend("bottomright", legend=unique(df$Type), col=IScolors, fill=IScolors, cex=0.75) 谢谢克里斯。我使用了 legend("bottomright", legend=unique(df$Type), col=IScolors, fill=IScolors, cex=0.75) 它给了我不同的列表谢谢!现在我需要弄清楚如何让它针对每种不同的类型显示正确的颜色,但我可以玩弄它。谢谢!【参考方案2】:

有点难以回答,因为您没有提供数据来重现图表。但似乎您可能想尝试使用 fill 参数。例如:

legend("bottomright", legend=my_data_set$Type, fill=IScolors, cex=0.75)

【讨论】:

谢谢克里斯。这添加了一个图例,但没有显示不同的类型列表 - 它列出了所有 5 个值。 (我会附上截图,但在评论中看不到如何做)

以上是关于如何在使用 r 中的符号()命令更新散点图后添加图例的主要内容,如果未能解决你的问题,请参考以下文章

R绘图基础指南 3. 散点图(合集)

R散点图:符号颜色代表重叠点的数量

R语言使用symbols函数创建气泡图(bubble plot)使用2D散点图通过添加形状大小来实现3D散点图的效果

2018-10-31用R绘制散点图矩阵(成对的散点图)

iOS Core Plot - 散点图符号颜色外观

怎样用excel把几个散点图放在一起?