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

hhh*_*hhh 0 visualization r bar-chart ggplot2

我试图在ggplot中绘制条形图,但我不断只获得网格.这显然是关于draw nothing 这里的演示,但我想了解如何以最简单的方式显示值.

在此输入图像描述

   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"))
Run Code Online (Sandbox Code Playgroud)

我可以获得这些情节的一种方法是 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")
Run Code Online (Sandbox Code Playgroud)

为什么没有在第一个条形图上绘制值以及如何以最简单的方式修复它?这种绘图方式背后的想法+是什么?它叫做什么?

www*_*www 5

使用ggplot2包,调用ggplot()只是为了调用基本网格; 就像在绘制图形之前取出一张方格纸一样.在任何一种情况下,准备好网格与绘制图形无关.这就是为什么运行以下命令将导致第一个示例中的空网格:

ggplot(data=testData, aes(x=x, y=y, fill = "#FFCC00"))
Run Code Online (Sandbox Code Playgroud)

它与使用plot()或hist()之类的函数不同,后者准备网格并同时绘制数据:

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

hist(x=x,data=testData)
Run Code Online (Sandbox Code Playgroud)

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()
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

如果我们想在该散点图中添加行,我们只需添加一行代码:

ggplot(data=testData,aes(x=x,y=y)) +
  geom_point() +
  geom_line()
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

如果需要,我们可以继续添加这样的图层.请注意,它们将按您键入的顺序打印(即前几行将在它们之后打印的行下面):

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

输出:

在此输入图像描述

另请注意,建议不要在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")
Run Code Online (Sandbox Code Playgroud)

而是使用:

ggplot(data=testData, aes(x=x, y=y, fill="#FFCC00")) +
  geom_bar(stat="identity")
Run Code Online (Sandbox Code Playgroud)

如果要绘制未在第一个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))
Run Code Online (Sandbox Code Playgroud)