首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定制气泡图

定制气泡图
EN

Stack Overflow用户
提问于 2021-02-24 14:57:14
回答 2查看 535关注 0票数 0

我在做一个泡泡的阴谋。我的数据是:

代码语言:javascript
复制
Year<-rep(2001:2005, each = 5)
name<-c("John","Ellen","Mark","Randy","Luisa")
Name<-c(rep(name,5))
Value<-sample(seq(0,25,by=1),25)
mydata<-data.frame(Year,Name,Value)

到目前为止,我已经到了这个地步:

代码语言:javascript
复制
ggplot(mydata, aes(x=Year, y=Name, size = Value)) +
  geom_point() +
  theme(axis.line = element_blank(),
        axis.text.x=element_text(size=11,margin=margin(b=10),colour="black"),
        axis.text.y=element_text(size=13,margin=margin(l=10),colour="black",
                                 face="italic"),
        axis.ticks = element_blank(),
        axis.title=element_text(size=18,face="bold"),
        panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        panel.background = element_blank(),
        legend.text = element_text(size=14),
        legend.title = element_text(size=18))

我需要很多修改,但我不知道如何做(我不太熟悉ggplot2)。首先,我想使用viridis标度,但是scale_color_viridisscale_fill_viridis都不起作用(我也尝试过设置discrete=T参数)。

其次,我希望避免要绘制的0值(即,在绘制0值时有一个空白),但既不使用na.omit (例如ggplot(na.omit(mydata), aes(x=Year, y=Name, size = Value))ggplot(mydata, aes(x=Year, y=Name, size = na.omit(Value)))),也不使用Value对象工作中的0。

第三,我希望图例是连续的:Value的绘制值在1到25之间(就像我想移除零一样),但是默认的图例是离散的,有5点断点。

我希望这个图看起来有点像这样(气泡大小取决于Value的值):

有什么建议吗?很抱歉问了这么多问题,但我在理解ggplot的工作原理上遇到了一些实际的困难。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-02-24 15:06:57

这就是你要找的吗?

代码语言:javascript
复制
library(ggplot2)

Year<-rep(2001:2005, each = 5)
name<-c("John","Ellen","Mark","Randy","Luisa")
Name<-c(rep(name,5))
Value<-sample(seq(0,25,by=1),25)
Value <- ifelse(Value == 0, NA, Value)
mydata<-data.frame(Year,Name,Value)

ggplot(mydata, aes(x=Year, y=Name, size = Value, colour = Value)) +
  geom_point() +
  scale_colour_viridis_c() +
  scale_size(guide = F) +
  theme(axis.line = element_blank(),
        axis.text.x=element_text(size=11,margin=margin(b=10),colour="black"),
        axis.text.y=element_text(size=13,margin=margin(l=10),colour="black",
                                 face="italic"),
        axis.ticks = element_blank(),
        axis.title=element_text(size=18,face="bold"),
        panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        panel.background = element_blank(),
        legend.text = element_text(size=14),
        legend.title = element_text(size=18))
#> Warning: Removed 1 rows containing missing values (geom_point).

关于您的观点:我只看到了scale_colour_viridis_cscale_colour_viridis_b函数,它们的颜色与我所能看到的不同。也许我漏掉了什么包裹?

其次,关于NAs:您只需要用NA替换0。

最后,关于比例:颜色刻度是自动连续的。连续地描绘尺寸是有点棘手的,因此它永远是离散的。但是我帮你把它从传说中删除了,这样你才有颜色,就像你的例子一样。

票数 0
EN

Stack Overflow用户

发布于 2021-02-24 15:34:48

作为思考这件事的另一种方式。也许会有帮助。:-)

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

set.seed(123)

df <- tibble(
  year = rep(2001:2005, each = 5),
  name = rep(c("John","Ellen","Mark","Randy","Luisa"),5),
  value = sample(seq(0,25,by=1),25)
)

df %>%
  mutate(name_2 = ifelse(year>2001 & year<2005, NA, name)) %>%
  ggplot(aes(year, value, group = name, label = name_2, color = name)) + 
  geom_line() +
  geom_point() +
  geom_text(vjust = -1) +
  scale_color_brewer(palette = "Set1") +
  theme_minimal(base_family = "serif") +
  theme(legend.position = "none") +
  xlab("")

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

https://stackoverflow.com/questions/66353383

复制
相关文章

相似问题

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