为什么这个ggplot只绘制没有值的网格?
问题描述:
我想在ggplot中绘制一个条形图,但我不断只有网格。这显然是关于draw nothing
here的演示,但我想了解如何以最简单的方式获取值。为什么这个ggplot只绘制没有值的网格?
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
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()
输出:
如果我们想要添加行到scatterplot,我们只需添加一行代码:
ggplot(data=testData,aes(x=x,y=y)) +
geom_point() +
geom_line()
输出:
我们可以不断加入这样的层,如果我们想。只要注意,他们将在订单打印您键入他们(即头几行会后,他们印制的线下):
ggplot(data=testData,aes(x=x,y=y)) +
geom_bar(stat="identity",fill="#00BFC4") +
geom_point() +
geom_line()
输出:
另外,还要注意建议不要在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))
是否有可能做comboplots其中两个differen哪些部分定义了两套不同的数据,以便在图层之间进行绘图? – hhh
当然。这是ggplot最擅长的事情之一。请参阅我为解决此问题所做的上述编辑。 – www