R 如何在ggplot2中缩放介于0和1之间的直方图?

R 如何在ggplot2中缩放介于0和1之间的直方图?,r,ggplot2,R,Ggplot2,我得到的是带有直方图计数的绘图,但我想将其缩放到0和1之间。从这个问题中,我了解了如何为一个数据帧执行此操作,但如果我使用两个数据帧,如我的问题中所述,会怎么样 首先缩放数据!只需创建一个y轴在0和某个数字之间缩放的临时数据集——将所有数据除以该特定数字(如果希望最大值为1.00,请将除数设置为最大值)。首先缩放数据!只需创建一个y轴在0和某个数字之间缩放的临时数据集——将所有数据除以该特定数字(如果希望最大值为1.00,请将除数设置为最大值) 我应该这样做 如果希望两个直方图都由相同的除数进行

我得到的是带有直方图计数的绘图,但我想将其缩放到0和1之间。从这个问题中,我了解了如何为一个数据帧执行此操作,但如果我使用两个数据帧,如我的问题中所述,会怎么样


首先缩放数据!只需创建一个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)