0

このスクリプトを使用して、R で ggplot2 を使用して化学元素をプロットしています。

# Load the same Data set but in different name, becaus it is just for     plotting elements as a well log:
Core31B1 <- read.csv('OilSandC31B1BatchResultsCr.csv', header = TRUE)
#
# Calculating the ratios of Ca.Ti, Ca.K, Ca.Fe:
C31B1$Ca.Ti.ratio <- (C31B1$Ca/C31B1$Ti)
C31B1$Ca.K.ratio <- (C31B1$Ca/C31B1$K)
C31B1$Ca.Fe.ratio <- (C31B1$Ca/C31B1$Fe)
C31B1$Fe.Ti.ratio <- (C31B1$Fe/C31B1$Ti)
#C31B1$Si.Al.ratio <- (C31B1$Si/C31B1$Al)
#
# Create a subset of ratios and depth
core31B1_ratio <- C31B1[-2:-18]
#
# Removing the totCount column:
Core31B1 <- Core31B1[-9]
#
# Metling the data set based on the depth values, to have only three columns:    depth, element and count
C31B1_melted <- melt(Core31B1, id.vars="depth")
#ratio melted
C31B1_ra_melted <- melt(core31B1_ratio, id.vars="depth")
#
# Eliminating the NA data from the data set
C31B1_melted<-na.exclude(C31B1_melted)
# ratios
C31B1_ra_melted <-na.exclude(C31B1_ra_melted)
#
# Rename the columns:
colnames(C31B1_melted) <- c("depth","element","counts")
# ratios
colnames(C31B1_ra_melted) <- c("depth","ratio","percentage")
#
# Ploting the data in well logs format using ggplot2:
Core31B1_Sp <- ggplot(C31B1_melted, aes(x=counts, y=depth)) + 
theme_bw() + 
geom_path(aes(linetype = element))+ geom_path(size  = 0.6) + 
labs(title='Core 31 Box 1 Bioturbated sediments') +
scale_y_reverse() +
  facet_grid(. ~ element, scales='free_x')  #rasterImage(Core31Image, 0,   1515.03, 150, 0, interpolate = FALSE)
#
# View the plot:
Core31B1_Sp

次の画像が得られました (プロットには 7 つの要素プロットがあり、それぞれにスケールがあります。左端の陰影と画像は無視してください)。

私の質問は、対数スケールを使用するのと同じように、これらのスケールを同じにする方法はありますか? はいの場合、スケールを変更するにはコードで何を変更する必要がありますか?

4

1 に答える 1

1

「同じ」が何を意味するのかは明確ではありません。これは、値を変換するログと同じ結果が得られないためです。対数変換を取得する方法は次のとおりです。これを no using と組み合わせると、free_xあなたが求めていると思われるプロットが得られます。

まず、再現可能なデータが提供されていないため (良い質問をする方法について詳しくは、こちらを参照してください)、データにあると思われる機能の少なくとも一部を示すものを以下に示します。私はtidyverse(具体的にはdplyrand tidyr)を使用して構築を行っています:

forRatios <-
  names(iris)[1:3] %>%
  combn(2, paste, collapse = " / ")

toPlot <-
  iris %>%
  mutate_(.dots = forRatios) %>%
  select(contains("/")) %>%
  mutate(yLocation = 1:n()) %>%
  gather(Comparison, Ratio, -yLocation) %>%
  mutate(logRatio = log2(Ratio))

最後の行は比率の底 2 の対数を取ることに注意してください。これにより、各方向 (1 より上と下) の比率を意味のあるプロットにすることができます。そのステップが必要だと思います。myDF$logRatio <- log2(myDF$ratio)を使用したくない場合は、同様のことを行うことができますdplyr

次に、それをプロットすることができます:

ggplot(
  toPlot
  , aes(x = logRatio
        , y = yLocation) ) +
  geom_path() +
  facet_wrap(~Comparison)

与えます:

ここに画像の説明を入力

于 2017-01-03T14:30:38.100 に答える