[英]Scatter plot with column names on x-axis with classes
我想制作一個散點圖,其中x軸是離散的(一周中的一天),而y軸是連續的(值),以及一個為每個數據點賦予顏色的類指示符。
與此類似:將列名稱繪制為R中的x軸
但是我不想使用數據中的所有列,而顏色是基於我不希望看到的觀測值。
示例數據:
DAT = data.frame(
person = c(1:5),
Mon = c(100, 98, 95, 99, 93),
Tues = c(95, 88, 90, 91, 87),
Wed = c(85, 80, 86, 81, 80),
Thurs = c(84, 80, 77, 75, 74),
Fri = c(66, 50, 20, 0, 72),
Score = c("Y","Y","N","N","N")
)
ggplot(DAT, aes(x = c(Mon, Tues, Wed, Thurs, Fri), y = values, color = Score)) + geom_point()
我的try / pesuedo ggplot代碼無法正常工作,但希望能對我要完成的工作有所了解。
我試圖將Mon-Fri設為數字(1,2,3,4,5),以便將其作為我的x坐標,將值作為y坐標,但這意味着行數是5倍。
有任何想法嗎?
第一:您的數據是“寬”的(天為列)。 最好將其設置為“長”(一列為幾天,另一列為值)。
然后:您需要訂購日期-將變量設為一個因子並設置水平。
tidyr::gather()
使數據變長, dplyr::mutate
對日期進行排序。
library(dplyr)
library(tidyr)
library(ggplot2)
DAT %>%
gather(Day, Value, -person, -Score) %>%
mutate(Day = factor(Day, levels = c("Mon", "Tues", "Wed", "Thurs", "Fri"))) %>%
ggplot(aes(Day, Value)) +
geom_point(aes(color = Score))
您可以融合數據,然后繪制:
library(ggplot2)
library(reshape2)
DAT = data.frame(
person = c(1:5),
Mon = c(100, 98, 95, 99, 93),
Tues = c(95, 88, 90, 91, 87),
Wed = c(85, 80, 86, 81, 80),
Thurs = c(84, 80, 77, 75, 74),
Fri = c(66, 50, 20, 0, 72),
Score = c("Y","Y","N","N","N")
)
DAT.melt = melt(DAT,id=c("person","Score"))
ggplot(DAT.melt, aes(x = variable, y = value, color = Score)) + geom_point()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.