Plotting two variables as lines using ggplot2 on the same graph
For a small number of variables, you can build the plot manually yourself:
ggplot(test_data, aes(date)) +
geom_line(aes(y = var0, colour = "var0")) +
geom_line(aes(y = var1, colour = "var1"))
Plotting two variables as lines using ggplot2 on the one graph
df <- data.frame(
Year = c(2000L, 2001L, 2002L, 2003L, 2004L, 2005L),
Export = c(79L, 86L, 87L, 87L, 98L, 107L),
Import = c(32L, 34L, 32L, 32L, 34L, 37L)
)
library(tidyverse)
df_l <- pivot_longer(df, cols = -Year)
ggplot(df_l, aes(Year, value, color = name)) +
geom_line()
Created on 2022-01-21 by the reprex package (v2.0.1)
Plotting two lines in a ggplot graph
The range of numbers in both columns are magnitudes off so may want to plot using a log scale on y-axis. Here's how to plot two variables using ggplot on the same graph in R.
# first parse date string into Date object
df$date <- as.Date(df$month, "%y-%d-%b") # 16-05-May
library(ggplot2)
ggplot(df, aes(date)) + scale_y_log10() +
geom_line(aes(y = count, colour = "red")) +
geom_line(aes(y = col.count, colour = "blue"))
If you normalize the col.count variable as you describe then you can plot them together without one appearing completely flat with respect to the other.
library(scales)
ggplot(df, aes(date)) + scale_y_continuous(labels = comma) +
geom_line(aes(y = count, colour = "red")) +
geom_line(aes(y = col.count/2000, colour = "blue"))
Showing the two graphs as time series stacked on each other is another approach to show two variables that have vastly different ranges on y-axis.
require(gridExtra)
p1 <- ggplot(df, aes(date,count)) + geom_line(colour = "red")
p2 <- ggplot(df, aes(date,col.count)) + geom_line(colour = "blue")
grid.arrange(p1, p2, nrow=2)
ggplot2 plots the two variables in the same plot but one variable with reversed y axis
You can multiply values of len for supp == VC by -1 and then plot as usual.
Then, set new breaks and labels using scale_y_continuous
.
library(dplyr)
library(ggplot2)
df2 %>%
mutate(len = ifelse(supp == "VC", len*-1,len)) %>%
ggplot(aes(x = dose, y = len, color = supp, group = supp))+
geom_point()+
geom_line()+
scale_y_continuous(limits = c(-40,40), breaks = seq(-20,20, by = 20),
labels = c(20,0,20))
Is it what you are looking for ?
Plot two lines on the same y-axis; Ggplot, R
I guess that your data variable is not in the right format. E.g. if you run
class(final_table$month)
This should yield date. So you need to get it into the right format. Here's an example with your numbers.
Month <- as.character(c("2018-04", "2018-05", "2018-06")) #or convert it to character after
a <- c(758519.397875, 964792.603725, 703170.240575)
b <- c(2404429.258675, 1995902.14473, 1294997.84319)
final_table <- data.frame(Month, a, b)
#your Month variable is messed up, you actually need the day!
final_table$Month <- as.Date(paste(final_table$Month,"-01",sep=""))
library(reshape) #need to load that for melt
bla3 <- melt(final_table, id='Month')
ggplot(data=bla3, aes(x=Month, y=value, colour= variable, group=variable)) +
geom_line()
Plot with multiple lines in different colors using ggplot2
ggplot needs the data long instead of wide. You can use tidyr's pivot_longer
, but there are other functions as well like reshape.
library(tidyverse)
set.seed(20)
df <- as.data.frame(matrix(rnorm(30*16), 30, 16))
df[,17] <- 1980:2009
df <- df[,c(17,1:16)]
colnames(df) <- c("Year", "Model 1", "Model 2", "Model 3", "Model 4", "Model 5", "Model 6", "Model 7", "Model 8",
"Model 9","Model 10", "Model 11", "Model 12", "Model 13", "Model 14", "Model 15", "Model 16")
df %>%
as_tibble() %>%
pivot_longer(-1) %>%
ggplot(aes(Year, value, color = name)) +
geom_point() +
geom_line()
For a more interpolated line you can try ggalt
's x-spline approach
df %>%
as_tibble() %>%
pivot_longer(-1) %>%
filter(grepl("12|13|14", name)) %>%
ggplot(aes(Year, value, color = name)) +
geom_point() +
ggalt::geom_xspline()
Related Topics
How to Remove Rows With Any Zero Value
Error in Confusionmatrix the Data and Reference Factors Must Have the Same Number of Levels
How to Filter Multiple Columns With Same Condition in R
Removing Columns That Are All 0
Replacing Nas With Latest Non-Na Value
Relative Frequencies/Proportions With Dplyr
Shading a Kernel Density Plot Between Two Points.
Access Lapply Index Names Inside Fun
Delete Rows That Exist in Another Data Frame
How to Add a Suffix (Or Prefix) Elements of an Existing List
How to Append a Sequential Number for Every Element in a Data Frame
How to Give Subtitles for Subplot in Plot_Ly Using R
Coerce Multiple Columns to Factors At Once
Aggregating by Unique Identifier and Concatenating Related Values into a String