knitr::opts_chunk$set(echo=T, comment=NA, error=T, warning=F, message = F, fig.align = 'center', results = "hold")
If we invoke the function getStandingKatzCurve
without any parameters, by defult it will use a Tpr=1.3
for the low-pressure set of Tpr
curves and plot it.
library(zFactor) sk <- getStandingKatzCurve()
If we want to specify a Tpr curve:
library(zFactor) getStandingKatzCurve(tpr = 1.05, toSave = FALSE, toView = FALSE)
Or for a couple of Tpr curves, we specify a vector with 2 or more components:
library(zFactor) tpr_vec <- c(1.05, 1.1) result <- getStandingKatzCurve(tpr = tpr_vec, toSave = FALSE, toView = FALSE)
Tpr
datasetThe returning object of getStandingKatzCurve
is a list of dataframes, which contains a dataframe for each of the Tpr
curves specified:
class(result) # class of the object `result` is a list of dataframes names(result) # name of each dataframe within the list
For Tpr = 1.05
:
library(tibble) as_tibble(result[["1.05"]])
And, for Tpr = 1.1
:
as_tibble(result[["1.1"]])
lp
Standing-Katz curvesOr we can plot all the lp
Standing-Katz curves:
# view all the `Tpr` SK individual charts tpr_vec <- getStandingKatzTpr(pprRange = "lp") result <- getStandingKatzCurve(tpr_vec, toSave = FALSE, toView = FALSE)
The plotting function in getStandingKatzCurve
has a default value for the Y scale of 0.2 to 1.2, just to make the plot uniform. But you can change that.
Let's say you don't like the Tpr
curve at 1.7 (shown above), just change the ylim
parameter:
getStandingKatzCurve(tpr = 1.7, toSave = FALSE, toView = FALSE, ylim = c(0.8, 1.1))
And here is the list of dataframes of the digitized points for the lp
Standing-Katz curves:
names(result)
We have this other simpler function that will return only the data without saving, plotting or viewing the object. It is called getStandingKatzData
:
library(zFactor) tpr_vec <- c(1.05, 1.3, 1.5) all_tpr2 <- getStandingKatzData(tpr_vec) names(all_tpr2)
Similarly, to what we did with getStandingKatzCurve
, we could extract a dataframe for any Tpr:
library(tibble) as_tibble(all_tpr2[["1.5"]])
Tpr
curvesTo be able to plot multiple Tpr curves in one figure we have to convert the multiple dataframes to a tidy
dataset. We will take a look on two ways of doing this:
Following from the previous example, we have to create a tidy dataset from the list of dataframes.
Let's plot the curves:
library(data.table) library(ggplot2) # join the dataframes with rbindlist adding an identifier column all_tpr_df <- data.table::rbindlist(all_tpr2, idcol = TRUE) colnames(all_tpr_df)[1] <- "Tpr" # name the identifier as Tpr ggplot(all_tpr_df, aes(x=Ppr, y=z, group=Tpr, color=Tpr)) + geom_line() + geom_point()
Using this function multiplotStandingKatz
you can achieve the same result:
tpr_vec <- c(1.05, 1.3, 1.5) multiplotStandingKatz(tpr_vec)
The dots are the digitized points of the Standing-Katz chart.
Tpr
curves of Standing-Katz chartUsing lapply
, getStandingKatzData
and data.table::rbindlist
:
library(zFactor) library(ggplot2) library(data.table) tpr_vec <- c(1.05, 1.1, 1.2, 1.3, 1.5, 1.6, 1.7, 1.9, 2.0, 2.4, 2.6, 2.8, 3.0) all_tpr2 <- (lapply(tpr_vec, function(x) getStandingKatzData(tpr = x))) names(all_tpr2) <- tpr_vec all_tpr_df <- data.table::rbindlist(all_tpr2, idcol = TRUE) colnames(all_tpr_df)[1] <- "Tpr" ggplot(all_tpr_df, aes(x=Ppr, y=z, group=Tpr, color=Tpr)) + geom_line() + geom_point()
Or the one-liner:
tpr_vec <- getStandingKatzTpr(pprRange = "lp") multiplotStandingKatz(tpr_vec)
If you just prefer the low range Tpr
curves:
library(zFactor) library(ggplot2) library(data.table) low_tpr_vec <- c(1.05, 1.1, 1.2, 1.3, 1.4) low_tpr_li <- (lapply(low_tpr_vec, function(x) getStandingKatzData(tpr = x))) names(low_tpr_li) <- low_tpr_vec low_tpr_df <- data.table::rbindlist(low_tpr_li, idcol = TRUE) colnames(low_tpr_df)[1] <- "Tpr" ggplot(low_tpr_df, aes(x=Ppr, y=z, group=Tpr, color=Tpr)) + geom_line() + geom_point()
With the one liner:
low_tpr_vec <- c(1.05, 1.1, 1.2, 1.3, 1.4) multiplotStandingKatz(low_tpr_vec)
Tpr
curveslibrary(zFactor) library(ggplot2) library(data.table) med_tpr_vec <- c(1.5, 1.6, 1.7, 1.8, 1.9) med_tpr_li <- (lapply(med_tpr_vec, function(x) getStandingKatzData(tpr = x))) names(med_tpr_li) <- med_tpr_vec med_tpr_df <- data.table::rbindlist(med_tpr_li, idcol = TRUE) colnames(med_tpr_df)[1] <- "Tpr" ggplot(med_tpr_df, aes(x=Ppr, y=z, group=Tpr, color=Tpr)) + geom_line() + geom_point()
The one liner:
med_tpr_vec <- c(1.5, 1.6, 1.7, 1.8, 1.9) multiplotStandingKatz(low_tpr_vec)
Tpr
curveslibrary(zFactor) library(ggplot2) library(data.table) hi_tpr_vec <- c(2.0, 2.4, 2.6, 2.8, 3.0) hi_tpr_li <- (lapply(hi_tpr_vec, function(x) getStandingKatzData(tpr = x))) names(hi_tpr_li) <- hi_tpr_vec hi_tpr_df <- data.table::rbindlist(hi_tpr_li, idcol = TRUE) colnames(hi_tpr_df)[1] <- "Tpr" ggplot(hi_tpr_df, aes(x=Ppr, y=z, group=Tpr, color=Tpr)) + geom_line() + geom_point()
hi_tpr_vec <- c(2.0, 2.4, 2.6, 2.8, 3.0) multiplotStandingKatz(hi_tpr_vec)
By performing a summary of the tidy dataset we can learn a lot more of the data we are plotting:
library(tibble) as_tibble(hi_tpr_df)
summary(hi_tpr_df)
With this we are in a position to compare the original Standing-Katz chart against the most common compresssibility correlations.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.