有没有办法在R(ggplot)中使用字符而不是数字作为轴刻度标记

时间:2015-07-11 21:12:16

标签: r ggplot2

我有以下代码生成图表。

Bloom <- read.table("Phenology Example.txt", header = T)

library(ggplot2)
library(reshape2)

x  <- Bloom$Julian_Date
A <- Bloom$Bloom_A
B <- Bloom$Bloom_B
df <- data.frame(x, A, B)

df2 <- melt(data = df, id.vars = "x")

ggplot(data = df2, aes(x = x, y = value, color = variable)) + 
  geom_line() + 
  scale_y_continuous(breaks = round(seq(min(0), max(1), by = 1),1)) +
  labs(title = "Example", 
       x = "Date",
       y = "Status", 
       colour = "Legend") +
  xlim(120,131)

返回Bloom的结果:

    ID    Julian_Date   A       B
1   1         120       0       0
2   2         121       0       0
3   3         122       1       0
4   4         123       1       0
5   5         124       1       0
6   6         125       1       1
7   7         126       1       1
8   8         127       1       1
9   9         128       0       1
10 10         129       0       1
11 11         130       0       1
12 12         131       0       0

基本上,我的图表显示沿y轴的两个值:a 0(表示在给定日期未满足条件)和1(表示在给定日期满足条件)。有没有办法将y轴上的0和1更改为一个单词或一组单词,例如“Met”或“Not Met”?

这不是一个大问题,但我觉得它会更具视觉吸引力并且更有意义。 Resulting graph of running the above code

1 个答案:

答案 0 :(得分:2)

您可以将df2$value转换为一个因子,其值为Met / Not Met,然后删除+ scale_y_continuous(...),因为ggplot会自动正确处理它。

OR

您可以使用+ scale_y_discrete(labels = c("Not Met","Met"))。但要使用它,您需要将数据从0更改为1,2,否则会出现奇怪的显示:

df2$value <- df2$value + 1 # change data

ggplot(data = df2, aes(x = x, y = value, color = variable)) + 
  geom_line() + 
  scale_y_discrete(labels = c("Met","Not Met")) +
  labs(title = "Example", 
       x = "Date",
       y = "Status", 
       colour = "Legend") +
  xlim(120,131)

plot with discrete scale