为什么这个ggplot只绘制没有值的网格?

问题描述:

我想在ggplot中绘制一个条形图,但我不断只有网格。这显然是关于draw nothinghere的演示,但我想了解如何以最简单的方式获取值。为什么这个ggplot只绘制没有值的网格?

enter image description here

library(ggplot2) 
    testData<-data.frame(x=c("a","b","c","d","e","f"), y=c(10,6,9,28,10,17)) 
    bar <- ggplot(data=testData, aes(x=c("a","b","c","d","e","f"), y=c(10,6,9,28,10,17), fill = "#FFCC00")) 

的一种方式,我可以得到该地块是geom_bar

enter image description here

bar <- ggplot(data=testData, aes(x=c("a","b","c","d","e","f"), y=c(10,6,9,28,10,17), fill = "#FFCC00")) + geom_bar(stat="identity") 

为什么值不是第一线图上绘制,以及如何解决这是最简单的方法吗?这种与+作图的方式背后有什么想法,它叫什么?

随着ggplot2包,调用ggplot()只打算调用基本网格;这就像绘制图表之前拿出一张方格纸。无论哪种情况,准备好网格与绘制图表无关。这就是为什么运行以下命令将导致空网格在你的第一个例子:

ggplot(data=testData, aes(x=x, y=y, fill = "#FFCC00")) 

这是不一样的使用类似的情节)的函数(或HIST(),这预习电网并绘制在数据同时:

plot(x=x,y=y,data=testData) 

hist(x=x,data=testData) 

中ggplot“+”只是一种方式说,有涉及到我们要包含在第一个空白格栅顶部的ggplot多个参数。这就是为什么每个由“+”分隔的行通常称为图层。

所以,如果我们想要做一个简单的散点图,我们在网格上添加点:

testData<-data.frame(x=c(1:6), y=c(10,6,9,28,10,17)) 

ggplot(data=testData,aes(x=x,y=y)) + 
    geom_point() 

输出:

enter image description here

如果我们想要添加行到scatterplot,我们只需添加一行代码:

ggplot(data=testData,aes(x=x,y=y)) + 
    geom_point() + 
    geom_line() 

输出:

enter image description here

我们可以不断加入这样的层,如果我们想。只要注意,他们将在订单打印您键入他们(即头几行会后,他们印制的线下):

ggplot(data=testData,aes(x=x,y=y)) + 
    geom_bar(stat="identity",fill="#00BFC4") + 
    geom_point() + 
    geom_line() 

输出:

enter image description here

另外,还要注意建议不要在ggplot调用中多次调用您的数据;这可能导致错误。

不要使用:

ggplot(data=testData, aes(x=c("a","b","c","d","e","f"), 
         y=c(10,6,9,28,10,17), fill = "#FFCC00")) + 
    geom_bar(stat="identity") 

#or 

ggplot(data=testData, aes(x=testData$x, y=testData$x, fill = "#FFCC00")) + 
    geom_bar(stat="identity") 

而是使用:

ggplot(data=testData, aes(x=x, y=y, fill="#FFCC00")) + 
    geom_bar(stat="identity") 

如果你想从数据帧(或多个)第一ggplot()行内不叫积数据,然后一个简单的数据参数添加到使用不同的数据帧中的“层”,像这样:

ggplot(data=testData,aes(x=x,y=y)) + 
    geom_bar(stat="identity",fill="#00BFC4") + 
    geom_point(data=differentDf, aes(x=x,y=y)) + 
    geom_line(data=differentDf, aes(x=x,y=y)) 
+0

是否有可能做comboplots其中两个differen哪些部分定义了两套不同的数据,以便在图层之间进行绘图? – hhh

+0

当然。这是ggplot最擅长的事情之一。请参阅我为解决此问题所做的上述编辑。 – www