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()

enter image description here

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))

enter image description here

1
chappers 21 Juli 2016, 14:48
Terima kasih banyak. Jawaban Anda sangat membantu. Sebenarnya saya menggunakan geom_line(aes(x=NScale, y=Val2, colour=Tx, shape=Varx, linetype=Varx))
 – 
Christian Silva
22 Juli 2016, 04:25
Sekedar FYI, geom_line tidak memahami estetika shape sehingga tidak benar-benar melakukan apa-apa :P
 – 
chappers
22 Juli 2016, 04:27
Benar! geom_line(aes(x=NScale, y=Val2, colour=Tx, linetype=Varx)) Terima kasih!
 – 
Christian Silva
22 Juli 2016, 04:35