Ini adalah data dari file csv saya:
Tx, Varx, Scale, Val1, Val2
A, VAR1, 5, 516, 2
A, VAR1, 10, 447.4, 5
A, VAR1, 15, 294, 8
A, VAR1, 20, 217.2, 12
A, VAR2, 5, 675.4, 4
A, VAR2, 10, 423.2, 9
A, VAR2, 15, 276, 12
A, VAR2, 20, 200, 15
B, VAR1, 5, 624, 6
B, VAR1, 10, 465.2, 13
B, VAR1, 15, 315.2, 16
B, VAR1, 20, 234.8, 18
B, VAR2, 5, 518.8, 8
B, VAR2, 10, 443, 17
B, VAR2, 15, 278.4, 20
B, VAR2, 20, 217.8, 24
Saya ingin memplot garis (tidak hanya titik) untuk membedakan antara nilai Varx dan Tx. Saya mencoba membuat plot dengan kode ini:
data_table = read.csv("PATH/file.csv",check.names=FALSE,header=T,sep=",")
data_table$NScale <- as.numeric(as.character((data_table$Scale)))
ggplot(data_table, aes(x=NScale, y=Val2, colour=Tx, shape=Varx, linetype=Varx, group=Tx)) + geom_point()
Ketika saya mencoba untuk memplot garis untuk menggabungkan segitiga biru, segitiga merah, lingkaran merah, lingkaran biru, menggunakan geom_line(), geom_path() pesan kesalahan ditampilkan:
Error: geom_path: If you are using dotted or dashed lines, colour, size and linetype must be constant over the line
Bagaimana saya bisa membuat pengelompokan garis berdasarkan bentuk dan warna? Saya sudah mencoba beberapa cara, tetapi masih tidak mendapatkannya. Apa masalahnya?
0
Christian Silva
21 Juli 2016, 14:15
1 menjawab
Jawaban Terbaik
Anda harus mencoba membuat variabel "pengelompokan" baru dan memisahkan cara Anda membuat plot untuk "titik" dan "garis".
Saya telah melakukan ini di sini menggunakan dplyr
tetapi Anda juga dapat melakukannya menggunakan basis R:
library(dplyr)
data_table <- data_table %>%
rowwise() %>%
mutate(TxVarxgroup = paste0(Tx, Varx, collapse=""))
ggplot(data_table) +
geom_point(aes(x=NScale, y=Val2, colour=Tx, shape=Varx)) +
geom_line(aes(x=NScale, y=Val2, group=TxVarxgroup))
1
chappers
21 Juli 2016, 14:48
geom_line(aes(x=NScale, y=Val2, colour=Tx, shape=Varx, linetype=Varx))
geom_line
tidak memahami estetikashape
sehingga tidak benar-benar melakukan apa-apa :Pgeom_line(aes(x=NScale, y=Val2, colour=Tx, linetype=Varx))
Terima kasih!