我有以下代码生成图表。
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”?
这不是一个大问题,但我觉得它会更具视觉吸引力并且更有意义。
答案 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)