R 如何在ggplot2中缩放介于0和1之间的直方图?
我得到的是带有直方图计数的绘图,但我想将其缩放到0和1之间。从这个问题中,我了解了如何为一个数据帧执行此操作,但如果我使用两个数据帧,如我的问题中所述,会怎么样R 如何在ggplot2中缩放介于0和1之间的直方图?,r,ggplot2,R,Ggplot2,我得到的是带有直方图计数的绘图,但我想将其缩放到0和1之间。从这个问题中,我了解了如何为一个数据帧执行此操作,但如果我使用两个数据帧,如我的问题中所述,会怎么样 首先缩放数据!只需创建一个y轴在0和某个数字之间缩放的临时数据集——将所有数据除以该特定数字(如果希望最大值为1.00,请将除数设置为最大值)。首先缩放数据!只需创建一个y轴在0和某个数字之间缩放的临时数据集——将所有数据除以该特定数字(如果希望最大值为1.00,请将除数设置为最大值) 我应该这样做 如果希望两个直方图都由相同的除数进行
首先缩放数据!只需创建一个y轴在0和某个数字之间缩放的临时数据集——将所有数据除以该特定数字(如果希望最大值为1.00,请将除数设置为最大值)。首先缩放数据!只需创建一个y轴在0和某个数字之间缩放的临时数据集——将所有数据除以该特定数字(如果希望最大值为1.00,请将除数设置为最大值) 我应该这样做 如果希望两个直方图都由相同的除数进行规格化: 首先获取原始直方图的y范围
ggobj
我应该这样做
如果希望两个直方图都由相同的除数进行规格化:
首先获取原始直方图的y范围
ggobj不需要临时数据集,您可以在绘图美学中提供一个等式。@maximusdooku抱歉,我没有看到使用两个数据集的限制-。count../max(…count..)
似乎只适用于一个数据集,这是有意义的。不需要临时数据集,您可以在绘图美学中提供一个等式。@maximusdooku抱歉,我没有看到使用两个数据集的限制-。count../max(…count..)
似乎只适用于单个变量,这是有意义的。当我除以y_range时,即使y_range存在,我也会得到此错误:eval中的错误(expr、envir、enclose):对象“y_range”未找到好的,您不能将环境变量与特殊的ggplot变量一起使用,如.count..
,所以你需要在aes中重新定义它。我修复了代码,现在应该可以工作了。当我除以y_范围时,即使y_范围存在,我也会得到这个错误:eval中的错误(expr,envir,enclose):对象“y_范围”找不到好的,你不能将环境变量与特殊的ggplot变量一起使用,如.count..
,所以你需要在aes中重新定义它。我修正了密码,现在应该可以用了。
ggplot() +
geom_histogram(data = df1, aes(x=meanf,fill = "g", color="g"), alpha = 0.6,binwidth = 0.02)+
geom_histogram(data = df2, aes(x=meanf,fill = "b", color="b"), alpha = 0.4,binwidth = 0.02)+
scale_colour_manual(name="N1", values=c("g" = "green", "b"="blue"), labels=c("b"="1", "g"="2")) +
scale_fill_manual(name="N2", values=c("g" = "green", "b"="blue"), labels=c("b"="1", "g"="2"))+
theme_bw()+
ggsave('temp.jpg')
geom_histogram(data = df1, aes(y = ..ncount..,x=meanf,fill = "g", color="g"))
ggobj <- ggplot() +
geom_histogram(data = df1, aes(x=meanf,fill = "g", color="g"), alpha = 0.6,binwidth = 0.02)+
geom_histogram(data = df2, aes(x=meanf,fill = "b", color="b"), alpha = 0.4,binwidth = 0.02)
y_max <- ggplot_build(ggobj)$panel$ranges[[1]]$y.range[2]
p <- ggplot() +
geom_histogram(data = df1, aes(y_max=y_max, y=..count../y_max,x=meanf,fill = "g", color="g"), alpha = 0.6,binwidth = 0.02)+
geom_histogram(data = df2, aes(y_max=y_max, y=..count../y_max,x=meanf,fill = "b", color="b"), alpha = 0.4,binwidth = 0.02)