R ggplot中的SpinePlot或至少垂直标签
当我在spineplot(基本R图形)的x轴上有多个分类变量时,我经常发现我的一些标签丢失了。有没有办法使x轴标签垂直?或者更好的是,有没有一种简单的方法可以使用ggplot制作Spineplot。我知道我可以制作可变宽度的堆叠条形图,但制作这些条形图似乎很痛苦,更痛苦的是将可变宽度的条形图放在一起。虽然spineplots很好,也很简单,但我想对它们的外观有更多的控制 可复制示例:R ggplot中的SpinePlot或至少垂直标签,r,ggplot2,R,Ggplot2,当我在spineplot(基本R图形)的x轴上有多个分类变量时,我经常发现我的一些标签丢失了。有没有办法使x轴标签垂直?或者更好的是,有没有一种简单的方法可以使用ggplot制作Spineplot。我知道我可以制作可变宽度的堆叠条形图,但制作这些条形图似乎很痛苦,更痛苦的是将可变宽度的条形图放在一起。虽然spineplots很好,也很简单,但我想对它们的外观有更多的控制 可复制示例: spineplot(factor(mpg$drv)~factor(mpg$manufacturer),
spineplot(factor(mpg$drv)~factor(mpg$manufacturer),
xlab = "Manufacturer", ylab = "Wheel Drive")
#mpg comes from library(ggplot2)
这里我有15个制造商,但有10个标签。我还想要一些颜色。
我发现了这些帖子,但我觉得解决方案并不特别容易
这需要进行一些操作,部分基于计算每个条的必要宽度和位置。我选择使用dplyr进行操作,此时可以创建所需的脊椎图:
library(dplyr)
d <- mpg %>%
count(manufacturer, drv) %>%
mutate(total = sum(n), fraction = n / total)
lab <- d %>%
distinct(manufacturer) %>%
select(manufacturer, total) %>%
ungroup() %>%
mutate(position = .5 * (cumsum(total) + cumsum(lag(total, default = 0))))
d %>%
inner_join(lab) %>%
ggplot(aes(position, fraction, fill = drv, width = total)) +
geom_bar(stat = "identity") +
scale_x_continuous(labels = lab$manufacturer, breaks = lab$position) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
xlab("Manufacturer")
库(dplyr)
d%
计数(制造商,drv)%>%
突变(总=和(n),分数=n/总)
实验室%
不同的(制造商)%>%
选择(制造商,总数)%>%
解组()%>%
突变(位置=0.5*(累积和(总计)+累积和(滞后(总计,默认值=0)))
d%>%
内部连接(实验室)%>%
ggplot(aes(位置、分数、填充=drv、宽度=total))+
几何图形栏(stat=“identity”)+
连续缩放(标签=实验室$制造商,中断=实验室$位置)+
主题(axis.text.x=元素\文本(角度=90,hjust=1))+
xlab(“制造商”)