график с накоплением ggplot

Линия данных: https://www.dropbox.com/s/ql5jw7eng3plrso/GTalvC_MacroValueChange. / а>

Код:

    library(ggplot2)
    library(grid)

    #Upload data
    ccmacrosims2 <- read.csv(file = "F:/Purdue University/RA_Position/PhD_ResearchandDissert/PhD_Draft/GTAP-CGE/GTAP_NewAggDatabase/NewFiles/GTAP_MacroValueChange.csv", header=TRUE, sep=",", na.string="NA", dec=".", strip.white=TRUE)

    #Data manipulation for analysis
    ccmacrorsts2 <- as.data.frame(ccmacrosims2)
    ccmacrorsts2[6:10] <- sapply(ccmacrorsts2[6:10],as.numeric)
    ccmacrorsts2 <- droplevels(ccmacrorsts2)
    ccmacrorsts2 <- transform(ccmacrorsts2,region=factor(region,levels=unique(region)))

    #Selecting data of interest
    GDPDecomp1 <- melt(ccmacrorsts2[ccmacrorsts2$region %in% c("TUR","MAR"), ]) 
    GDPDecomp2 <- GDPDecomp1[GDPDecomp1$sres %in% c("AVERAGE"), ]
    GDPDecomp.f <- subset(GDPDecomp2, variable !="GDP")

    #Ploting
    GDPDecompPlot <- ggplot(data = GDPDecomp.f, aes(factor(region),value,  fill=variable))
    GDPDecompPlot + geom_bar(stat="identity", position="stack") + facet_wrap(~tradlib, scales="free_y") +
    theme(axis.text.x = element_text(colour = 'black', angle = 90, size = 12, hjust = 0.5, vjust = 0.5),axis.title.x=element_blank()) + 
    ylab("GDP (Change in $US million)") + theme(axis.text.y = element_text(colour = 'black', size = 12), axis.title.y = element_text(size = 12)) + 
    theme(strip.text.x = element_text(size = 12, hjust = 0.5, vjust = 0.5, face = 'bold'))

Проблема: штриховая диаграмма с использованием ggplot (см. Ниже) ggplot_barplot

excel_barplot: excel_barplot_sample

Кажется, что график не совсем правильно отображает значения данных. Я ищу что-то вроде того, что мы получаем от excel_barplot_sample. Например, сравнивая панель «TRLIBEU» под ggplot с ее аналогом с использованием excel, можно ясно заметить, что ggplot не правильно захватывает значения в данных при наложении.

Любая помощь в том, как исправить несоответствие?

заранее спасибо


person iouraich    schedule 22.01.2013    source источник
comment
Если отрицательные значения данных вызывают проблему, вам действительно следует поднять ошибку на ggplot2 для предупреждения. Как, черт возьми, люди могли бы это обнаружить в противном случае?   -  person smci    schedule 12.05.2013


Ответы (1)


Если вам нужно сложить столбцы в ggplot2 с отрицательными значениями, тогда для лучшего результата вы должны создать два новых фрейма данных - один для положительных значений, а второй для отрицательных значений.

GDPDecomp.f.pos<-GDPDecomp.f[GDPDecomp.f$value>0,]
GDPDecomp.f.neg<-GDPDecomp.f[GDPDecomp.f$value<0,]

Затем используйте каждый фрейм данных в своем собственном geom_bar() вызове.

ggplot()+
  geom_bar(data=GDPDecomp.f.pos,aes(x=factor(region),y=value,fill=variable),stat="identity")+
  geom_bar(data=GDPDecomp.f.neg,aes(x=factor(region),y=value,fill=variable),stat="identity")+
  facet_wrap(~tradlib, scales="free_y") + 
  theme(axis.text.x = element_text(colour = 'black', angle = 90, size = 12, hjust = 0.5, vjust = 0.5),axis.title.x=element_blank()) + 
  ylab("GDP (Change in $US million)") + theme(axis.text.y = element_text(colour = 'black', size = 12), axis.title.y = element_text(size = 12)) + 
  theme(strip.text.x = element_text(size = 12, hjust = 0.5, vjust = 0.5, face = 'bold'))

введите описание изображения здесь

person Didzis Elferts    schedule 22.01.2013