【发布时间】:2021-05-26 22:04:21
【问题描述】:
我正在尝试做一个气泡图。我的数据是:
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)
到目前为止,我已经到了这一点:
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_viridis 和scale_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 的工作原理方面遇到了一些真正的困难。谢谢!
【问题讨论】:
-
只是一个想法:我最近有一个类似的想法来使用点图,但随后使用了一个相对简单的散点图来切换两个变量,在这种情况下,您的 y 轴和图例(点尺寸)。问题是你有两个连续变量和第三个由你的标签组成的变量。对我来说,使用散点图然后使用
geom_text()添加标签(Randy、Mark 等)更有意义。 -
@FabianHabersack 是的,实际上我首先从点图开始,然后移至散点图,但最终到了这里!我想现在我只是想看看哪一个信息量更大。也许利用这个机会最终学习了一些 ggplot 技巧。
标签: r ggplot2 bubble-chart