Bagaimana cara menggunakan ggplot2 untuk menghasilkan grafik lingkaran?

Saya memiliki nilai vektor yang ingin saya tampilkan sebagai diagram lingkaran. Vektor terdiri dari 1, 2, dan 3, dan saya ingin diagram lingkaran saya menampilkan persentase 1, 2, dan 3 dalam vektor serta label areanya. Yang pertama adalah Demokrat, 2 adalah Partai Republik, dan 3 adalah Independen. Vektor yang saya kerjakan adalah kolom kerangka data. Mungkin ada beberapa masalah tipe, meskipun saya telah meneruskannya menggunakan as.numeric() dan as.factor().

Berikut adalah contoh df (catatan, seperti yang Anda lihat di kode, saya tertarik pada kolom Q7):

  Q6 Q7 Q8 Q9
3 30  3  5  1
4 30  3  5  1
5 65  3  2  2
6 29  3  5  1
7 23  1  4  1
8 24  1  5  1

Berikut ini kode yang saya coba:

install.packages('ggplot2')
library(ggplot2)

# pie graph for party
pie <- ggplot(data=data, aes(x = as.factor(data$Q7), fill = factor(cyl)))
pie + coord_polar(theta = "y")

Ini mengembalikan kesalahan: 'Tidak ada lapisan di plot'

Terima kasih untuk bantuannya!


person goldisfine    schedule 07.12.2013    source sumber
comment
untuk menunjukkan persentase, Anda dapat membuka pertanyaan lain ini: stackoverflow.com/questions/8952077/   -  person pandorabob    schedule 04.11.2014
comment
Seperti yang R mengatakannya sendiri di manual Diagram Lingkaran mereka : Diagram lingkaran adalah cara yang sangat buruk dalam menampilkan informasi. Mata pandai menilai ukuran linier dan buruk dalam menilai area relatif. Diagram batang atau diagram titik adalah cara yang lebih disukai untuk menampilkan jenis data ini. Mereka mengacu pada Cleveland dkk. (1985). Sangat dianjurkan.   -  person MS Berends    schedule 10.05.2017


Jawaban (1)


Bagan kutub di ggplot pada dasarnya adalah transformasi bagan batang bertumpuk sehingga Anda memerlukan geom_bar untuk membuatnya berfungsi. Kita akan menggunakan satu grup (x = factor(1)) untuk menyatukan semua nilai dan fill pada kolom yang diinginkan untuk membagi luasnya. Pada titik ini Anda akan mendapatkan diagram batang dengan satu batang.

bar <- ggplot(data, aes(x = factor(1), fill = factor(Q7))) + geom_bar(width = 1)
bar

masukkan deskripsi gambar di sini

Yang tersisa hanyalah menambahkan coord_polar:

pie <- bar + coord_polar(theta = "y")
pie

masukkan deskripsi gambar di sini

Anda dapat menambahkan theme_void() untuk menjatuhkan sumbu dan label:

pie + coord_polar(theta = "y") + theme_void()

masukkan deskripsi gambar di sini

person zero323    schedule 07.12.2013
comment
Saya rasa sudah jelas dari hasil bahwa ggplot tidak mendukung diagram lingkaran. Lihat alternatif berikut rgm3.lab. nig.ac.jp/RGM/R_rdfile?f=graphics/man/ , rgm3.lab.nig.ac.jp/RGM/R_rdfile?f=plotrix/man/ - person George Dontas; 07.12.2013