Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot中的SpinePlot或至少垂直标签_R_Ggplot2 - Fatal编程技术网

R ggplot中的SpinePlot或至少垂直标签

R ggplot中的SpinePlot或至少垂直标签,r,ggplot2,R,Ggplot2,当我在spineplot(基本R图形)的x轴上有多个分类变量时,我经常发现我的一些标签丢失了。有没有办法使x轴标签垂直?或者更好的是,有没有一种简单的方法可以使用ggplot制作Spineplot。我知道我可以制作可变宽度的堆叠条形图,但制作这些条形图似乎很痛苦,更痛苦的是将可变宽度的条形图放在一起。虽然spineplots很好,也很简单,但我想对它们的外观有更多的控制 可复制示例: spineplot(factor(mpg$drv)~factor(mpg$manufacturer),

当我在spineplot(基本R图形)的x轴上有多个分类变量时,我经常发现我的一些标签丢失了。有没有办法使x轴标签垂直?或者更好的是,有没有一种简单的方法可以使用ggplot制作Spineplot。我知道我可以制作可变宽度的堆叠条形图,但制作这些条形图似乎很痛苦,更痛苦的是将可变宽度的条形图放在一起。虽然spineplots很好,也很简单,但我想对它们的外观有更多的控制

可复制示例:

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(“制造商”)