Juanchi
Juanchi

Reputation: 1166

ggplot geom_line for specific factor levels

Is there a way to add a line for specific factor levels in ggplot? this simple example could provide a base to explain what I'm trying to say. In this case I'd like to avoid plotting the last level.

ggplot(BOD, aes(x=factor(Time), y=demand, group=1)) + geom_line() + geom_point()

enter image description here

Upvotes: 1

Views: 2289

Answers (1)

Jaap
Jaap

Reputation: 83275

You can just simply create a new variable with an NA-value for Time == 7:

BOD$demand2[BOD$Time<7] <- BOD$demand[BOD$Time<7]

and then plot:

ggplot(BOD, aes(x=factor(Time), y=demand2, group=1)) + 
  geom_line() + 
  geom_point() +
  theme_classic()

You could also do it on the fly by utilizing the functionality of the data.table-package:

library(data.table)
ggplot(data = as.data.table(BOD)[Time==7, demand := NA],
       aes(x=factor(Time), y=demand, group=1)) + 
  geom_line() + 
  geom_point() +
  theme_classic()

To answer your comment, you could include the point at 7 as follows:

ggplot(BOD, aes(x=factor(Time), y=demand2, group=1)) + 
  geom_line() + 
  geom_point(aes(x=factor(Time), y=demand)) +
  theme_classic()

Upvotes: 2

Related Questions