下面的代码运行良好,它正确地标记了条形图,但是,如果我尝试geom_text的直方图我失败,因为geom_text需要一个y分量和直方图的y分量是从不作为代码的一部分的频率然后如何带来直方图的标签?
效果很好
ggplot(csub, aes(x=Year, y=Anomaly10y, fill=pos)) +
geom_bar(stat="identity", position="identity") +
geom_text(aes(label=Anomaly10y,vjust=1.5))
Run Code Online (Sandbox Code Playgroud)
问题 - 下面的geom_text代码中没有Y组件(用?表示)
ggplot(csub,aes(x=Anomaly10y)) +
geom_histogram()
geom_text(aes(label=?,vjust=1.5))
Run Code Online (Sandbox Code Playgroud)
默认情况下,geom需要x和y组件,
当我没有y-component时我该怎么办,因为它是由函数自动生成的?
这个问题来自以下两个主题:
如何使用stat_bin2d()来计算ggplot2中的计数标签?
在第一个主题中,用户想要使用stat_bin2d生成热图,然后想要在热图上写入每个bin的计数.用户最初想要使用的方法不起作用,这是表明stat_bin2d设计为使用geom ="rect"而不是"text"的最佳答案.没有给出令人满意的答复.
第二个问题几乎与第一个问题相同,但有一个关键的区别,即第二个问题中的变量是文本,而不是数字.答案产生了所需的结果,将bin的计数值放在stat_2d热图中的bin上.
为了比较我准备以下代码的两种方法:
library(ggplot2)
data <- data.frame(x = rnorm(1000), y = rnorm(1000))
ggplot(data, aes(x = x, y = y))
geom_bin2d() +
stat_bin2d(geom="text", aes(label=..count..))
Run Code Online (Sandbox Code Playgroud)
我们知道这首先给你错误:
"错误:geom_text需要以下缺失的美学:x,y".
与第一个问题中的问题相同.有趣的是,从stat_bin2d更改为stat_binhex可以正常工作:
library(ggplot2)
data <- data.frame(x = rnorm(1000), y = rnorm(1000))
ggplot(data, aes(x = x, y = y))
geom_binhex() +
stat_binhex(geom="text", aes(label=..count..))
Run Code Online (Sandbox Code Playgroud)
这是伟大的,但一般来说,我不认为十六进制binning是非常清楚的,并且为了我的目的,我不会为我想要的数据工作.我真的想使用stat_2d.
为了实现这一点,我根据第二个答案准备了以下工作:
library(ggplot2)
data <- data.frame(x = rnorm(1000), y = rnorm(1000))
x_t<-as.character(round(data$x,.1))
y_t<-as.character(round(data$y,.1))
x_x<-as.character(seq(-3,3),1)
y_y<-as.character(seq(-3,3),1)
data<-cbind(data,x_t,y_t)
ggplot(data, aes(x = x_t, y = y_t)) +
geom_bin2d() +
stat_bin2d(geom="text", aes(label=..count..))+
scale_x_discrete(limits =x_x) …Run Code Online (Sandbox Code Playgroud)