Luigi Marongiu
2021-Jan-24 14:48 UTC
[R] Plot dataframe with color based on a column value
Hello
is it possible to color the data of a dataframe according to the
values of one column?
I have a dataframe that OI have subdivided into X and Y, with a third
Z with the sample number. I would like to plot Y~X but coloring using
Z. But I would like to use base R and not lines.
Is that possible?
Thank you
```
d <- 2
K <- 10^13
A1_0 <- 1
A2_0 <- 100
A3_0 <- 500
A4_0 <- 10000
PCR <- function(initCopy, dupRate, Carry) {
ROI_T = initCopy
A = array()
for (i in 1:45) {
ROI_TplusOne <- ROI_T * dupRate * (1 - ROI_T/Carry)
A[i] <- ROI_TplusOne
ROI_T <- ROI_TplusOne
}
return(A)
}
A1 <- PCR(A1_0, d, K)
A2 <- PCR(A2_0, d, K)
A3 <- PCR(A3_0, d, K)
A4 <- PCR(A4_0, d, K)
# store results and plot
Z <- c(rep(1, 45), rep(2, 45), rep(3, 45), rep(4, 45))
X = rep(1:45,4)
Y = c(A1, A2, A3, A4)
ROI <- data.frame(Z, X, Y)
plot(Y ~ X, data = ROI, type = "l", lwd = 3)
```
1. lines() *is* base R. 2. See the col argument of ?plot.default. Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Sun, Jan 24, 2021 at 6:48 AM Luigi Marongiu <marongiu.luigi at gmail.com> wrote:> Hello > is it possible to color the data of a dataframe according to the > values of one column? > I have a dataframe that OI have subdivided into X and Y, with a third > Z with the sample number. I would like to plot Y~X but coloring using > Z. But I would like to use base R and not lines. > Is that possible? > Thank you > > ``` > d <- 2 > K <- 10^13 > A1_0 <- 1 > A2_0 <- 100 > A3_0 <- 500 > A4_0 <- 10000 > PCR <- function(initCopy, dupRate, Carry) { > ROI_T = initCopy > A = array() > for (i in 1:45) { > ROI_TplusOne <- ROI_T * dupRate * (1 - ROI_T/Carry) > A[i] <- ROI_TplusOne > ROI_T <- ROI_TplusOne > } > return(A) > } > A1 <- PCR(A1_0, d, K) > A2 <- PCR(A2_0, d, K) > A3 <- PCR(A3_0, d, K) > A4 <- PCR(A4_0, d, K) > # store results and plot > Z <- c(rep(1, 45), rep(2, 45), rep(3, 45), rep(4, 45)) > X = rep(1:45,4) > Y = c(A1, A2, A3, A4) > ROI <- data.frame(Z, X, Y) > plot(Y ~ X, data = ROI, type = "l", lwd = 3) > ``` > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >[[alternative HTML version deleted]]
Hello, Base R: colrs <- rainbow(length(unique(ROI$Z))) roi_wide <- reshape(ROI, v.names = "Y", timevar = "Z", idvar = "X", direction = "wide") matplot(roi_wide, type = "l", lwd = 3, lty = "solid", col = colrs) Hope this helps, Rui Barradas ?s 14:48 de 24/01/21, Luigi Marongiu escreveu:> Hello > is it possible to color the data of a dataframe according to the > values of one column? > I have a dataframe that OI have subdivided into X and Y, with a third > Z with the sample number. I would like to plot Y~X but coloring using > Z. But I would like to use base R and not lines. > Is that possible? > Thank you > > ``` > d <- 2 > K <- 10^13 > A1_0 <- 1 > A2_0 <- 100 > A3_0 <- 500 > A4_0 <- 10000 > PCR <- function(initCopy, dupRate, Carry) { > ROI_T = initCopy > A = array() > for (i in 1:45) { > ROI_TplusOne <- ROI_T * dupRate * (1 - ROI_T/Carry) > A[i] <- ROI_TplusOne > ROI_T <- ROI_TplusOne > } > return(A) > } > A1 <- PCR(A1_0, d, K) > A2 <- PCR(A2_0, d, K) > A3 <- PCR(A3_0, d, K) > A4 <- PCR(A4_0, d, K) > # store results and plot > Z <- c(rep(1, 45), rep(2, 45), rep(3, 45), rep(4, 45)) > X = rep(1:45,4) > Y = c(A1, A2, A3, A4) > ROI <- data.frame(Z, X, Y) > plot(Y ~ X, data = ROI, type = "l", lwd = 3) > ``` > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >