我正试图创建一个条形图,除非条形图被相互叠放的圆所取代。我有以下公司价值的数据集:
> dput(my.data)
structure(list(name = c("JUU", "Lyf", "Inf", "Coi", "Tan", "Rob",
"Out", "Zen", "Com", "Pel", "Con", "Soc", "Ind", "Cro", "GRA",
"Osc", "Zoo", "Kat", "Pro", "Nia", "Uni", "23a", "Ope", "Upt",
"Qua", "Aff", "App", "Ava", "Gus", "Zoc", "Apt", "Spr", "red",
"War", "Car", "Buz", "Quo", "Squ", "Afi", "Jet", "C3 ", "Hea",
"Hum", "Nex", "STX", "Roc", "Avi", "Off", "Gin", "App", "Doc",
"Rub", "Thu", "Zet", "Med", "Rub", "Clo", "Mar", "Kab", "Dra",
"Vox", "Des", "Ada", "Age", "Ken", "SMS", "Sup", "Sym", "Zoo",
"Par"), value = c(38, 15, 10, 8.05, 6.7, 5.6, 5.51, 4.5, 4.4,
4.15, 4, 4, 3.45, 3.35, 3.2, 3.2, 3.2, 3, 3, 2.7, 2.6, 2.5, 2.47,
2.3, 2.27, 2, 2, 2, 2, 2, 1.86, 1.81, 1.8, 1.75, 1.74, 1.7, 1.7,
1.7, 1.6, 1.6, 1.51, 1.5, 1.5, 1.5, 1.5, 1.41, 1.4, 1.39, 1.38,
1.35, 1.32, 1.3, 1.3, 1.3, 1.25, 1.23, 1.2, 1.2, 1.18, 1.07,
1.07, 1.02, 1, 1, 1, 1, 1, 1, 1, 0.08), year = c(2017, 2015,
2016, 2017, 2015, 2017, 2017, 2015, 2016, 2017, 2015, 2015, 2017,
2017, 2017, 2015, 2016, 2017, 2016, 2017, 2016, 2015, 2016, 2015,
2016, 2017, 2017, 2015, 2015, 2015, 2015, 2015, 2017, 2015, 2017,
2015, 2017, 2017, 2017, 2016, 2017, 2017, 2016, 2015, 2016, 2017,
2017, 2016, 2017, 2015, 2015, 2017, 2015, 2015, 2015, 2017, 2017,
2015, 2015, 2015, 2015, 2017, 2015, 2016, 2016, 2016, 2017, 2017,
2017, 2017)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-70L))
> head(my.data, 10)
# A tibble: 10 x 3
name value year
<chr> <dbl> <dbl>
1 JUU 38 2017
2 Lyf 15 2015
3 Inf 10 2016
4 Coi 8.05 2017
5 Tan 6.7 2015
6 Rob 5.6 2017
7 Out 5.51 2017
8 Zen 4.5 2015
9 Com 4.4 2016
10 Pel 4.15 2017
图表应该有三个栏,分别为2015年、2016年和2017年。每个条形图都由不同大小的圆形组成,底部是最大的圆形,顶部是最小的圆形。使用
value
列,我计算y值
cumValues
对于这些圆:
my.data <- my.data %>%
dplyr::arrange(desc(value)) %>%
dplyr::group_by(year) %>%
# dplyr::mutate(cumValues = cumsum(valueEoy2018 ^ 0.5)) %>%
dplyr::mutate(cumValues = cumsum(value)) %>%
dplyr::ungroup()
> head(my.data %>% dplyr::filter(year == 2017))
# A tibble: 6 x 4
name value year cumValues
<chr> <dbl> <dbl> <dbl>
1 JUU 38 2017 38
2 Coi 8.05 2017 46.0
3 Rob 5.6 2017 51.6
4 Out 5.51 2017 57.2
5 Pel 4.15 2017 61.3
6 Ind 3.45 2017 64.8
…最后,我创建了散点图:
minValue = min(my.data$value)
maxValue = max(my.data$value)
valueRange = c(minValue, maxValue)
my.data %>%
ggplot() +
geom_point(aes(x = year, y = cumValues, size = value),
alpha = 0.95, pch = 21, fill = colorGold, color = 'black') +
geom_text(aes(x = year, y = cumValues, label = ifelse(value > 5, name, '')),
size = 3, fontface = 'bold', hjust = 0.4, vjust = 1.) +
scale_size_continuous(range = valueRange)
…并收到以下信息:
这是
关闭
不管怎样,我都在为两个方面的问题苦苦挣扎。
弗斯特
最重要的是-圆圈重叠太多。我想让一个圆的底部接触它下面的圆的顶部。或者只是有点重叠。但并没有目前图表中显示的那么多。
在计算cumValues时,我尝试使用不同的函数,也尝试使用ggplots scale_size_continuous函数,但没有任何效果。我也尝试过使用缩放半径,但也失败了。
任何帮助这将是非常感谢,因为我认为这是一个很酷的类型的图表,我正在努力建立。