在 R 中编辑 ggplot2 气泡图:大小、颜色和标签

问题描述 投票:0回答:1

我正在尝试用这个气泡图做一些事情。

  1. 我想为我的绘图上每个气泡中出现的频率添加一个标签
  2. 更改该图的配色方案和主题,包括气泡的大小(添加 after_stat 后,我无法添加它。after_stat 似乎可以让我以颜色和大小绘制频率图表)
  3. 将图例的标题从“n”更改为其他任何内容。
p<-ggplot(Dataframe, aes(x = Confidence, y = Knowledge)) + geom_count(aes(color = after_stat(n), size=after_stat(n))) +guides(color = 'legend') + labs(x="Confidence", y="Knowledge") + theme(axis.title = element_text(size = (15), colour = "black"), 
  axis.text = element_text(colour = "black", size = (12))) 


之前,我尝试过这个:

我只能将气泡设为一种颜色(但无论我想要什么颜色 - 只是不超过 1),但气泡可以做得更大:

p<-ggplot(Dataframe, aes(x = Confidence, y = Knowledge)) + geom_count(color="blue") + scale_size(range= c(1,20), name = "Co-occurring")+ labs(x="Confidence", y="Knowledge") + theme(axis.title = element_text(size = (15), colour = "black"), 
  axis.text = element_text(colour = "black", size = (12)))

r ggplot2 plot graph frequency
1个回答
1
投票

您可以使用

geom_text
添加带有
stat = "sum"
的计数标签。气泡的大小通过
range
scale_size_continuous
参数进行更改。对于带标签的气泡图,我倾向于使用
shape = 21
来表示气泡,并通过填充美感来控制它们的颜色。可以使用
scale_fill_gradientn
选择的任何颜色来指定。要更改图例上的名称,请将与第一个参数相同的名称添加到填充和尺寸比例中。

顺便说一句,x 轴和 y 轴上的项目顺序是错误的。您需要通过将知识和信心转换为具有正确水平的因素来解决此问题:

library(tidyverse)

Dataframe %>%
  mutate(across(any_of(c("Confidence", "Knowledge")), 
                ~ factor(.x, c("Not at all", "A little", "Somewhat",
                               "Very", "Extremely")))) %>%
  ggplot(aes(x = Confidence, y = Knowledge)) + 
  geom_count(aes(fill = after_stat(n), size = after_stat(n)), shape = 21) +
  geom_text(stat = "sum", aes(label = after_stat(n)), size = 5) +
  scale_fill_gradientn("Observations", guide = "legend",
                       colors = c("pink", "white", "lightblue")) +
  scale_size_continuous("Observations", range = c(6, 15)) +
  theme_minimal(base_size = 5 * .pt)


使用的数据

如果没有可重现的数据,我不得不构建一个与您自己的名称和基本结构相同的随机数据集:

set.seed(123)

Dataframe <- data.frame(Confidence = sample(c("A little",
                                              "Somewhat",
                                              "Very",
                                              "Extremely"), 100, TRUE),
                        Knowledge  = sample(c("Not at all", 
                                              "A little",
                                              "Somewhat",
                                              "Very",
                                              "Extremely"), 100, TRUE))
© www.soinside.com 2019 - 2024. All rights reserved.