memvisualisasikan plot kotak horizontal di R


8

Saya memiliki dataset seperti ini. Data telah dikumpulkan melalui kuesioner dan saya akan melakukan beberapa analisis data eksplorasi.

windows <- c("yes", "no","yes","yes","no")
sql     <- c("no","yes","no","no","no")
excel  <- c("yes","yes","yes","no","yes")
salary <- c(100,200,300,400,500 )

test<- as.data.frame (cbind(windows,sql,excel,salary),stringsAsFactors=TRUE)
test[,"salary"] <- as.numeric(as.character(test[,"salary"] ))

Saya memiliki variabel hasil (gaji) dalam dataset saya dan beberapa variabel input (alat). Bagaimana saya bisa memvisualisasikan plot kotak horizontal seperti ini: masukkan deskripsi gambar di sini

Jawaban:


3

Mari kita mulai dengan membuat beberapa dataset palsu.

software = sample(c("Windows","Linux","Mac"), n=100, replace=T) 
salary = runif(n=100,min=1,max=100) 
test = data.frame(software, salary)

Ini akan membuat kerangka data testyang akan terlihat seperti:

    software    salary
1    Windows 96.697217
2      Linux 29.770905
3    Windows 94.249612
4        Mac 71.188701
5      Linux 94.028326
6      Linux  7.482632
7        Mac 98.841689
8        Mac 81.152623
9    Windows 54.073761
10   Windows  1.707829

EDIT berdasarkan komentar. Perhatikan bahwa jika data belum ada dalam format di atas, dapat diubah ke format ini. Mari kita ambil kerangka data yang disediakan dalam pertanyaan awal dan mari kita asumsikan kerangka data dipanggil raw_test.

    windows sql excel salary
1     yes  no   yes    100
2      no  yes  yes    200
3     yes  no   yes    300
4     yes  no    no    400
5      no  no   yes    500

Sekarang, dengan menggunakan meltfungsi / metode dari reshapepaket R, pertama-tama buat frame data test(yang akan digunakan untuk plot akhir) sebagai berikut:

# use melt to convert from wide to long format 
test = melt(raw_test,id.vars=c("salary"))
# subset to only select where value is "yes"
test = subset(test, value == 'yes')
# replace column name from "variable" to "software" 
names(test)[2] = "software"   

Sekarang, Anda akan mendapatkan bingkai data testyang terlihat seperti:

  salary software value
1     100  windows   yes
3     300  windows   yes
4     400  windows   yes
7     200      sql   yes
11    100    excel   yes
12    200    excel   yes
13    300    excel   yes
15    500    excel   yes

Setelah membuat dataset. Kami sekarang akan menghasilkan plot.

Pertama, buat plot bar di sebelah kiri berdasarkan jumlah perangkat lunak yang mewakili tingkat penggunaan.

p1 <- ggplot(test, aes(factor(software))) + geom_bar() + coord_flip()

Selanjutnya, buat boxplot di sebelah kanan.

p2 <- ggplot(test, aes(factor(software), salary)) + geom_boxplot() + coord_flip()

Akhirnya, tempatkan kedua plot ini bersebelahan.

require('gridExtra')
grid.arrange(p1,p2,nrow=1)

Ini harus membuat plot seperti:

Pada panel kiri menunjukkan jumlah bagaimana perangkat lunak yang berbeda digunakan diwakili melalui bar plot dan di panel kanan menunjukkan distribusi gaji yang dikelompokkan oleh perangkat lunak yang digunakan diwakili melalui box plot.


2

Anda akan perlu membuat kolom yang berisi info perangkat lunak - misalnya beri nama perangkat lunak dan kolom gaji memiliki gaji yang sesuai sehingga sesuatu seperti

 Software   Salary
 Microsoft  100
 Microsoft  300
 Microsoft  400
 SQL        200

dan seterusnya ... maka Anda bisa plot dengan kode di bawah ini

p <- ggplot(test, aes(factor(software), salary))
p + geom_boxplot() + coord_flip()

Bagus tapi Bagaimana saya bisa membuat kolom perangkat lunak?
Hamideh

Itu adalah sesuatu yang harus Anda teliti sendiri. Saya tidak yakin seperti apa kumpulan data Anda - fungsi lebur mungkin berguna bagi Anda.
Lauren Goodwin

@LaurenGoodwin Jawaban saya atas pertanyaan ini menggunakan gridExtra untuk memplot barplot dan boxplot berdampingan untuk menghasilkan visualisasi yang diminta.
Nitesh
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.