首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用第三个变量的标签自动地将两个ggplot组合成一个

如何使用第三个变量的标签自动地将两个ggplot组合成一个
EN

Stack Overflow用户
提问于 2020-03-19 18:14:51
回答 1查看 91关注 0票数 0

我想用颜色和形状来绘制数据。这是很好的工作,但我正在努力创造一个美好的传奇。

这是一个使用mtcar数据集的MWE。数据操作对于重新处理我正在处理的数据集是必要的。可变柱面板是人为创建的,以允许在圆柱体数字上填充颜色,并对这一类别中的每一个观察结果都有不同的形状。可变汽车是我理想中想要使用的图例标签。

代码语言:javascript
运行
复制
library(tidyverse)
library(plotly)

data(mtcars)
mtcars <- mtcars[c(1,3,4,5,8,30),c("cyl","disp","hp")] %>% 
  as_tibble(rownames="car") %>%
  group_by(cyl) %>% 
  mutate(cylindex=rank(cyl,ties.method="first")) %>%
  ungroup() %>%
  # removed because 'car' is available from the row name
  # but this was used in the original question and one answer
  #mutate(brand=letters[1:nrow(.)]) %>% 
  mutate_at(c("cyl","cylindex"),as_factor) %>%
  mutate(legend=paste(cyl,cylindex,sep=" - "))

mtcars %>% 
  ggplot(aes(x=disp, y=hp, color=cyl, shape=cylindex)) +
  geom_point(size=10) -> g
print(g)
ggplotly(g)

mtcars %>% 
  ggplot(aes(x=disp, y=hp, color=legend, shape=legend)) +
  geom_point(size=10) +
  scale_color_manual(values=c("red","red","blue","blue","blue","green")) + 
  scale_shape_manual(values=c(16,17,16,17,15,16))

ggplot2正在生产以下产品:

与诡计多端的传奇至少是结合,但我挣扎着自动更改标签为各自的汽车。

使用@ in 37的答案,我成功地生成了一个图例,类似于图形化,但采用了硬编码的方式。我在每篇文章旁边写下了我想要的传奇标签。这些信息来自从行名中添加的汽车列。

我怎样才能

-将这两个传说与ggplot2 (类似于ggploty )结合在一起,而无需硬编码的数据量。

-自动将图例标签更改为另一个变量中的值(本例中为品牌)

非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-03-19 18:46:29

为了组合传奇,您可以创建一个新的分类列,将这两个变量组合在一起:

代码语言:javascript
运行
复制
mtcars %>% 
  filter(as.numeric(cylindex)<=2) %>%
  mutate(Legend = paste(cyl,cylindex, sep = ",")) %>% 
  ggplot(aes(x=disp, y=hp, color=Legend, shape=Legend)) +
  geom_point(size=10) +
  scale_color_manual(values = rep(c("red","blue","green"), each = 2))+
  scale_shape_manual(values = rep(c(16,18),3))

如果您希望使用品牌变量作为标签,只需在您的brand中使用aes

代码语言:javascript
运行
复制
mtcars %>% 
  filter(as.numeric(cylindex)<=2) %>%
  ggplot(aes(x=disp, y=hp, color=brand, shape=brand)) +
  geom_point(size=10) +
  scale_color_manual(values = rep(c("red","blue","green"), each = 2))+
  scale_shape_manual(values = rep(c(16,18),3))

或者使用scale_color_manualscale_shape_manual,您可以将新的“联想”变量的每个级别与“品牌”值关联起来:

代码语言:javascript
运行
复制
mtcars %>% 
  filter(as.numeric(cylindex)<=2) %>%
  mutate(Legend = paste(cyl,cylindex, sep = ",")) %>% 
  ggplot(aes(x=disp, y=hp, color=Legend, shape=Legend)) +
  geom_point(size=10) +
  scale_color_manual(values = rep(c("red","blue","green"), each = 2), 
                     labels = c(`6,1` = "a",`6,2` = "b", `4,1` = "c",`4,2` = "h",`8,1` = "e", `8,2` = "g"))+
  scale_shape_manual(values = rep(c(16,18),3),
                     labels = c(`6,1` = "a",`6,2` = "b", `4,1` = "c",`4,2` = "h",`8,1` = "e", `8,2` = "g"))

它能回答你的问题吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60762913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档