如何在R中创建具有独立X轴值的直方图

时间:2017-03-02 22:27:49

标签: r plot axis

(第一次使用R用户)所以我正在尝试使用不同范围的x轴值重叠直方图,我可以轻松地从excel文件中重现。我觉得我在正确的轨道上,因为它绘制直方图并在x轴上制作x轴。我似乎无法弄清楚如何使轴(3)取出我想要的xlim =。下面是Im使用的代码和图片

## Open Xl Data into R
library(readxl)
dataset <- read_excel("location holder")
View(dataset)
## DLS subsets
Zone_1_DLS <- subset(dataset$DLS, dataset$Zone==1)
Zone_2_DLS <- subset(dataset$DLS, dataset$Zone==2)
Zone_3_DLS <- subset(dataset$DLS, dataset$Zone==3)
## ROP Subsets
Zone_1_ROP <- subset(dataset$DAVG_ROP, dataset$Zone==1)
Zone_2_ROP <- subset(dataset$DAVG_ROP, dataset$Zone==2)
Zone_3_ROP <- subset(dataset$DAVG_ROP, dataset$Zone==3)
## DLS Histograms
DLS1 <- hist(Zone_1_DLS)
DLS2 <- hist(Zone_2_DLS)
DLS3 <- hist(Zone_3_DLS)
## ROP Histograms
ROP1 <- hist(Zone_1_ROP)
ROP2 <- hist(Zone_2_ROP)
ROP3 <- hist(Zone_3_ROP)
## Plot Zone 1 Histograms
plot( ROP1, col=rgb(1,0,0,1), xlim=c(0,300), ylim = c(0,500))
plot( DLS1, axis(3),col=rgb(0,0,1,1), xlim=c(0,10), add = T)
axis(3,xlim=c(0,10))

Picture

1 个答案:

答案 0 :(得分:0)

我不确定您是否必须使用当前正在寻找的格式,但我不推荐它,因为它很难阅读并可能产生误导。我已经将不同的格式组合在一起,您可以将直方图绘制在一起。

此处使用您在评论中发布的rnorm()值:

set.seed(42) 
p1 <- data.frame(x = rnorm(500,4)) 
p2 <- data.frame(x = rnorm(500,150)) 

p1$cat <- "a"
p2$cat <- "b"


p <- rbind(p1, p2)
p$zone <- c(rep(c(1, 2), 500))


library(ggplot2)
ggplot(p, aes(x = x))+
  facet_grid(zone~cat, scales = "free")+
  geom_histogram(bins = 30)

这将给你这个图(a和b分别代表你的DLS和DAVG_ROP值类型,1和2代表不同的区域): multiple histograms with independent x axis

作为旁注,您将在图表输出中有3行,因为您有3个区域。

至于你的数据,这应该可以重现类似于例子的东西(我不能100%肯定,因为我没有真正测试你的数据,但我相当自信)。我建议将它全部保存为原始数据集,并重新组织一点。

library(dplyr)
library(ggplot2)
df1 <- dataset %>%
  select(DLS, Zone) %>%
  mutate(x = DLS, cat = "DLS") %>%
  select(x, Zone, cat)

df2 <- dataset %>%
  select(DAVG_ROP, Zone) %>%
  mutate(x = DAVG_ROP, cat = "DAVG_ROP")%>%
  select(x, Zone, cat)

df <- rbind(df1, df2)

ggplot(df, aes(x = x))+
  facet_grid(Zone~cat, scales = "free")+
  geom_histogram()

可能有更有效/简洁的方法在中间进行整理,但这也有效。