ฉันอยู่ในสถานการณ์เดียวกันชี้ให้เห็นโดยmalcookในความคิดเห็นของเขา : น่าเสียดายที่คำตอบของThierryไม่ทำงานกับ ggplot2 เวอร์ชั่น 0.9.3.1
png("figure_%d.png")
set.seed(2014)
library(ggplot2)
dataset <- data.frame(category = rep(LETTERS[1:5], 100),
x = rnorm(500, mean = rep(1:5, 100)),
y = rnorm(500, mean = rep(1:5, 100)))
dataset$fCategory <- factor(dataset$category)
subdata <- subset(dataset, category %in% c("A", "D", "E"))
ggplot(dataset, aes(x = x, y = y, colour = fCategory)) + geom_point()
ggplot(subdata, aes(x = x, y = y, colour = fCategory)) + geom_point()
นี่มันเป็นรูปแรก:
และตัวเลขที่สอง:
ในขณะที่เราสามารถเห็นสีไม่คงที่เช่น E เปลี่ยนจากสีม่วงแดงเป็นสีน้ำเงิน
ตามที่แนะนำโดยmalcookในความคิดเห็นของเขาและโดยhadleyในความคิดเห็นของเขารหัสที่ใช้limits
งานได้อย่างถูกต้อง:
ggplot(subdata, aes(x = x, y = y, colour = fCategory)) +
geom_point() +
scale_colour_discrete(drop=TRUE,
limits = levels(dataset$fCategory))
ให้ตัวเลขต่อไปนี้ซึ่งถูกต้อง:
นี่คือผลลัพธ์จากsessionInfo()
:
R version 3.0.2 (2013-09-25)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] methods stats graphics grDevices utils datasets base
other attached packages:
[1] ggplot2_0.9.3.1
loaded via a namespace (and not attached):
[1] colorspace_1.2-4 dichromat_2.0-0 digest_0.6.4 grid_3.0.2
[5] gtable_0.1.2 labeling_0.2 MASS_7.3-29 munsell_0.4.2
[9] plyr_1.8 proto_0.3-10 RColorBrewer_1.0-5 reshape2_1.2.2
[13] scales_0.2.3 stringr_0.6.2
factor
ที่พบได้ทั่วไปในทุกแปลง