R和GGPLOT:从第二个数据框架标记堆叠的条形图的麻烦


plot_data  <-  rbind(
                      data.frame(year = seq(2018,2027), value = seq(1000,10000,1000), type = 'Type A'),
                      data.frame(year = seq(2018,2027), value = seq(500,5000,500), type = 'Type B')
                      )
plot_labels     <-  data.frame(year = seq(2018,2027), label = seq(1500,15000,1500))
ggplot(plot_data, aes(x=as.character(year), y=value, fill=type)) +
geom_bar(width = .6, stat='identity') +
# geom_text(data = plot_labels, aes(x = year, y = text, label = label)) +
scale_x_discrete(name = '') +
scale_y_continuous(name = 'My Labeln') +
scale_fill_manual(name = '', values = c('red', 'blue')) +
theme(
  plot.title = element_text(size = 10, hjust = .5),
  panel.grid.major = element_line(colour = 'white', size = 1),
  panel.grid.minor = element_line(colour = 'white'),
  plot.background = element_rect(fill = 'white'),
  panel.background = element_rect(fill = 'white'),
  axis.text.x = element_text(colour = 'grey20', size = 7, angle = 45, hjust = 1),
  axis.title.y = element_text(color = 'grey20', size = 9),
  axis.text.y = element_text(colour = 'grey20', size = 7),
  legend.position='bottom',
  legend.key.size=unit(5,'mm'),
  legend.text = element_text(size = 7))

此代码将产生堆叠的条形图。

我的目标是在与堆叠棒的同一Y轴上标记plot_labels$label

在图定义中以 geom_text开头的无征服线抛出以下错误:

Error in eval(expr, envir, enclos) : object 'type' not found

plot_labels$label值等于 plot_data$year

汇总 plot_data$value

非常感谢故障排除的帮助!

一些问题:1)fill应放置在geom_bar中,否则将由随后的所有Geoms继承。2)当您提供xy时,geom_colgeom_bar好。3)在geom_text中,xy需要与ggplot中的类型相同。

ggplot(plot_data, aes(x=as.character(year), y=value)) +
    geom_col(aes(fill=type), width = .6) +
    geom_text(data = plot_labels, aes(x = as.character(year), y = label, label = label), vjust = 0) +
    scale_x_discrete(name = '') +
    scale_y_continuous(name = 'My Labeln') +
    scale_fill_manual(name = '', values = c('red', 'blue')) +
    theme(
        plot.title = element_text(size = 10, hjust = .5),
        panel.grid.major = element_line(colour = 'white', size = 1),
        panel.grid.minor = element_line(colour = 'white'),
        plot.background = element_rect(fill = 'white'),
        panel.background = element_rect(fill = 'white'),
        axis.text.x = element_text(colour = 'grey20', size = 7, angle = 45, hjust = 1),
        axis.title.y = element_text(color = 'grey20', size = 9),
        axis.text.y = element_text(colour = 'grey20', size = 7),
        legend.position='bottom',
        legend.key.size=unit(5,'mm'),
        legend.text = element_text(size = 7))

最新更新