ggplot中的垂直条形图

时间:2016-09-05 01:58:15

标签: r ggplot2

我想要这个情节

enter image description here 我从这个情节开始

enter image description here 但是当我尝试限制de轴时,情节会变为

enter image description here

请帮助

2 个答案:

答案 0 :(得分:1)

我想你可能需要这样的东西。我使用iris创建了一个示例数据,因为您没有提供可重现的最小数据。我们的想法是在geom_dumbbell()包中使用SciencePo来创建线条和点。然后,调整x刻度以为标签腾出空间。 geom_text_repel()可以帮助您很好地添加标签。如果您热衷于此,请查看this link

library(dplyr)
library(tibble)
library(ggplot2)
library(SciencePo)
library(ggrepel)

### Create a sample data
summarize(group_by(iris, Species),
          petal.width = sum(Petal.Width)) %>%
add_row(Species = "whatever", petal.width = 0) -> temp


ggplot(data = temp, aes(x = petal.width, y = Species)) +
geom_dumbbell(xend = 0 , point.size.r = 0, point.size.l = 3) +
scale_x_continuous(limits = c(0, max(temp$petal.width) + 10))) +
geom_text_repel(aes(x = petal.width, y = Species, label = petal.width),
                    segment.size = 0,
                    max.iter = 2e3,
                    nudge_x = 5)

enter image description here

答案 1 :(得分:0)

如果仅限于使用ggplot,那么一种方法是绘制线图并添加geom_segment。我刚刚使用了一些虚拟数据来演示如下。

data <- data.frame(tech=c('R','Java','Python'), articles=c(1000,2000,1500))

ggplot(data=data, aes(x=tech, y=articles)) + 
    geom_line() +
    geom_segment(aes(xend=tech, yend=0), color="black") + 
    geom_text(aes(label = articles), hjust = -.5) +
    geom_point(size=3) +
    scale_y_continuous(limits = c(0, 8000)) +
    ylab("Number of Scholarly Articles in 2015") +
    xlab("Analytics Software") +
    ggtitle("2015 Scholarly Articles by Analytics Software") +
    coord_flip()

enter image description here