r - 在 R 中控制 ggplotly 中的点顺序
问题描述
考虑在 R 中控制 ggplot2 中的点顺序时给出的问题(以及可重现的示例)?.
那里提供的解决方案(首先订购data.frame,然后绘制)也适用于我。但是,当我想使用plotly::ggplotly()
点的顺序查看结果图时,又搞砸了。有人知道如何保持绘图图中点的顺序吗?
解决方案
实际上,我发现即使没有首先更改绘图/数据框,在这个特定示例中也可以创建正确的顺序。
library(tidyverse)
library(plotly)
set.seed(1)
mydf <- data.frame(x=rnorm(500), label = 'a', stringsAsFactors = FALSE) %>% mutate(y = rnorm(500)*0.1 + x)
mydf$label[50] <- "point"
ggplot(mydf) + geom_point(aes(x=x, y=y, color=label, size = label)) +
scale_size_manual(values = c(a = 0.1,point = 2))
plotly::ggplotly()
更安全的选择可能是@Dinre 对您上述问题的回答- 首先将您的数据分成不同的层。我在答案中使用建议的快速基本 R 子集,但您也可以使用split
或使用 tidyverse 函数进行拆分。
df_layer_1 <- mydf[mydf$label=="a",]
df_layer_2 <- mydf[mydf$label=="point",]
ggplot() +
geom_point(data=df_layer_1, mapping = aes(x, y), colour="orange", size = .1) +
geom_point(data=df_layer_2, aes(x, y), colour="blue", size = 2)
plotly::ggplotly()
R version 3.6.0 (2019-04-26)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
other attached packages:
[1] plotly_4.9.0 ggplot2_3.2.0
推荐阅读
- java - firebase 实时数据库到列表视图?
- amazon-web-services - S3 存储桶访问仅限于 VPN
- apache-flink - 如何控制 Flink 作业在集群中的任务管理器之间正确分配/负载平衡?
- javascript - 我无法从 js selenium 以无头模式启动 ms edge
- javascript - 如何在 javascript 中为 IF 语句添加更多案例
- unit-testing - Spock 单元测试使用 spring 数据导致 Optional 中的错误
- html - 为什么符号“&”在我的 scss 代码中不起作用?
- java - org.apache.openjpa.persistence.PersistenceException:使用分布式事务时无法设置自动提交模式
- javascript - 无法在javascript中获取子元素的文本
- php - 在网格中显示带有子项和产品编号的 Woocommerce 产品类别