Membatasi Sumbu untuk ggplot

Saya mencoba memplot dataset pernikahan saya, yang terdiri dari Negara Bagian, Tahun, dan Tarif. Namun saya mencoba untuk fokus pada interval tahun tertentu, sehingga grafiknya terlihat tidak terlalu padat.

marriage<-read.csv(file="~/Desktop/datah.csv", header=T, sep=",",check.names=FALSE)
marriage
marriage <- marriage %>%
     gather(key=year, value=rate, `2017`:`1990`)
ggplot(marriage, aes(x=year, y=rate, group=State)) +
     geom_point(aes(color=State)) +
     geom_line(aes(color=State)) +
     theme_bw()

Saya telah mencoba menambahkan yang berikut ini untuk mencoba membatasi sumbu x dan y pada baris kode terakhir di atas

+ylim(0,2)
+scale_x_continuous(limits=c(2000, 2005))
+xlim(2010, 2015)
+scale_x_continous(breaks = seq(2000, 2005, 5))

Tapi saya mengerti, Kesalahan: Nilai diskrit dipasok ke skala berkelanjutan

Saya juga mencoba mengubahnya menjadi numerik

marriage$variable=as.numeric(levels(marriage$variable))[marriage$variable]

Saya mendapatkan kesalahan berikut Error in $‹-.data.frame(tmp, variabel, value = numerik(0)) : penggantian memiliki 0 baris, data memiliki 1071

Berikut adalah beberapa baris pertama datanya

                  State 2017 2016 2015 2014 2013 2012 2011 2010 2009 2008 2007 2006 2005 2004 2003 2002 2001 2000 1999 1995 1990
1               Alabama  7.0  7.1  7.4  7.8  7.8  8.2  8.4  8.2  8.3  8.6  8.9  9.2  9.2  9.4  9.6  9.9  9.4 10.1 10.8  9.8 10.6
2                Alaska  6.9  7.1  7.4  7.5  7.3  7.2  7.8  8.0  7.8  8.4  8.5  8.2  8.2  8.5  8.1  8.3  8.1  8.9  8.6  9.0 10.2
3               Arizona  5.8  5.9  5.9  5.8  5.4  5.6  5.7  5.9  5.6  6.0  6.4  6.5  6.6  6.7  6.5  6.7  7.6  7.5  8.2  8.8 10.0
4              Arkansas  9.5  9.9 10.0 10.1  9.8 10.9 10.4 10.8 10.7 10.6 12.0 12.4 12.9 13.4 13.4 14.3 14.3 15.4 14.8 14.4 15.3
5           California   6.3  6.5  6.2  6.4  6.5  6.0  5.8  5.8  5.8  6.7  6.2  6.3  6.4  6.4  6.1  6.2  6.5  5.8  6.4  6.3  7.9
6              Colorado  7.3  7.4  6.8  7.1  6.5  6.8  7.0  6.9  6.9  7.4  7.1  7.2  7.6  7.4  7.8    8  8.2  8.3  8.2  9.0  9.8
7           Connecticut  5.6  5.6  5.3  5.4    5  5.2  5.5  5.6  5.9  5.4  5.5  5.5  5.8  5.8  5.5  5.7  5.4  5.7  5.8  6.6  7.9
8              Delaware  5.5  5.6  5.7    6  6.6  5.8  5.2  5.2  5.4  5.5  5.7  5.9  5.9  6.1    6  6.4  6.5  6.5  6.7  7.3  8.4
9  District of Columbia  8.2  8.1  8.2 11.8 10.8  8.4  8.7  7.6  4.7  4.1  4.2    4  4.1  5.2  5.1  5.1  6.2  4.9  6.6  6.1  8.2
10              Florida  7.8  8.1  8.2  7.3    7  7.2  7.4  7.3  7.5  8.0  8.5  8.6  8.9  9.0    9  9.4  9.3  8.9  8.7  9.9 10.9
11              Georgia  6.9  6.8  6.2  ---  ---  6.5  6.6  7.3  6.6  6.0  6.8  7.3  7.0  7.9    7  6.5  6.1  6.8  7.8  8.4 10.3
12               Hawaii 15.3 15.6 15.9 17.7 16.3 17.5 17.6 17.6 17.2 19.1 20.8 21.9 22.6 22.6   22 20.8 19.6 20.6 18.9 15.7 16.4
13                Idaho  7.8  8.1  8.2  8.4  8.2  8.2  8.6  8.8  8.9  9.5 10.0 10.1 10.5 10.8 10.9   11 11.2 10.8 12.1 13.1 13.9

person subrinarafiq    schedule 12.11.2019    source sumber
comment
Kemungkinan duplikat Memplot dengan ggplot2: Kesalahan : Nilai diskrit diberikan ke skala kontinu pada sumbu y kategorikal   -  person MatthewR    schedule 13.11.2019
comment
Sepertinya kolom year Anda kemungkinan besar bersifat kategoris setelah Anda gather(). Argumen convert di gather() dapat membantu dalam hal ini.   -  person aosmith    schedule 13.11.2019
comment
@MatthewR Saya melihat tautan itu dan mencoba menerapkannya dan mendapatkan kesalahan ini. marriage$variable=as.numeric(levels(marriage$variable))[marriage$variable] Kesalahan dalam $‹-.data.frame(tmp, variabel, nilai = numerik(0)): penggantian memiliki 0 baris, data memiliki 1071 –   -  person subrinarafiq    schedule 13.11.2019
comment
Agar orang-orang dapat membantu Anda menafsirkan pesan kesalahan yang tidak dapat ditebak, contoh yang dapat direproduksi akan diperlukan   -  person camille    schedule 13.11.2019
comment
Saya yakin pertanyaan ini sebenarnya tentang membaca dalam file dan bukan ggplot2. Menurut saya gejalanya adalah plotnya, tetapi masalahnya adalah input file. Coba na.strings = "---" dalam read.csv().   -  person Adam    schedule 13.11.2019


Jawaban (3)


Mencoba

scale_x_continous(breaks = seq(2000, 2015, 5)

Maaf tidak bisa berkomentar, tidak cukup perwakilan

person Hansel Palencia    schedule 12.11.2019
comment
Saya tahu Anda tidak dapat berkomentar, tetapi kesalahan yang sama masih muncul. Kesalahan: Nilai diskrit diberikan ke skala berkelanjutan - person subrinarafiq; 13.11.2019

Variabel 'tahun' disimpan sebagai karakter setelah gather. Anda dapat menyesuaikan dalam bentuk ulang (memperbarui ke pivot_longer):

    marriage <-
      marriage %>%
      pivot_longer(
        cols = `2017`:`1990`,
        names_to = 'year',
        values_to = 'rate'
      ) %>%
      mutate(
        year = as.numeric(year)
      )

Panggilan ggplot harus dijalankan dari sana.

person AHart    schedule 13.11.2019
comment
Saya mendapatkan kesalahan ini ketika saya mencoba menjalankannya, Error in wedding %›% pivot_longer(cols = 2017:1990,names_to = year, : tidak dapat menemukan fungsi %›% - person subrinarafiq; 13.11.2019
comment
Operator pipa, %>% berasal dari magrittr, bagian dari tidyverse - person AHart; 13.11.2019
comment
Saya menginstal paket yang benar sekarang, tetapi saya mendapatkan Kesalahan berikut: Tidak ada tipe umum untuk 2017 ‹double› dan 2014 ‹factor‹31e4f››. Hubungi rlang::last_error() untuk melihat penelusuran balik. - person subrinarafiq; 14.11.2019

Saya pikir ggplot() akan benar-benar melakukan pekerjaan yang layak secara otomatis menggunakan interval yang layak. Jika Anda ingin membiarkannya melakukan hal sendiri, cobalah mengubah tahun menjadi tanggal. Cara mudah untuk melakukannya adalah dengan make_date() dari lubridate.

perpustakaan

library(dplyr)
library(tidyr)
library(lubridate)
library(ggplot2)

baca data (edit berdasarkan pembaruan pertanyaan)

Berikut datanya berdasarkan editan. Ini akan membuatnya masuk seperti yang Anda miliki. Perhatikan bagaimana saya jelas menggunakan pendekatan yang berbeda dari yang Anda lakukan.

Saya rasa Anda perlu menambahkan na.strings = "---" seperti yang saya lakukan agar kolom NA dapat terbaca dengan benar.

Juga, saya harus menambahkan District of Columbia di dalam tanda kutip tunggal. Ini mungkin merupakan masalah yang Anda alami.

data <- "State 2017 2016 2015 2014 2013 2012 2011 2010 2009 2008 2007 2006 2005 2004 2003 2002 2001 2000 1999 1995 1990
Alabama  7.0  7.1  7.4  7.8  7.8  8.2  8.4  8.2  8.3  8.6  8.9  9.2  9.2  9.4  9.6  9.9  9.4 10.1 10.8  9.8 10.6
Alaska  6.9  7.1  7.4  7.5  7.3  7.2  7.8  8.0  7.8  8.4  8.5  8.2  8.2  8.5  8.1  8.3  8.1  8.9  8.6  9.0 10.2
Arizona  5.8  5.9  5.9  5.8  5.4  5.6  5.7  5.9  5.6  6.0  6.4  6.5  6.6  6.7  6.5  6.7  7.6  7.5  8.2  8.8 10.0
Arkansas  9.5  9.9 10.0 10.1  9.8 10.9 10.4 10.8 10.7 10.6 12.0 12.4 12.9 13.4 13.4 14.3 14.3 15.4 14.8 14.4 15.3
California   6.3  6.5  6.2  6.4  6.5  6.0  5.8  5.8  5.8  6.7  6.2  6.3  6.4  6.4  6.1  6.2  6.5  5.8  6.4  6.3  7.9
Colorado  7.3  7.4  6.8  7.1  6.5  6.8  7.0  6.9  6.9  7.4  7.1  7.2  7.6  7.4  7.8    8  8.2  8.3  8.2  9.0  9.8
Connecticut  5.6  5.6  5.3  5.4    5  5.2  5.5  5.6  5.9  5.4  5.5  5.5  5.8  5.8  5.5  5.7  5.4  5.7  5.8  6.6  7.9
Delaware  5.5  5.6  5.7    6  6.6  5.8  5.2  5.2  5.4  5.5  5.7  5.9  5.9  6.1    6  6.4  6.5  6.5  6.7  7.3  8.4
'District of Columbia'  8.2  8.1  8.2 11.8 10.8  8.4  8.7  7.6  4.7  4.1  4.2    4  4.1  5.2  5.1  5.1  6.2  4.9  6.6  6.1  8.2
Florida  7.8  8.1  8.2  7.3    7  7.2  7.4  7.3  7.5  8.0  8.5  8.6  8.9  9.0    9  9.4  9.3  8.9  8.7  9.9 10.9
Georgia  6.9  6.8  6.2  ---  ---  6.5  6.6  7.3  6.6  6.0  6.8  7.3  7.0  7.9    7  6.5  6.1  6.8  7.8  8.4 10.3
Hawaii 15.3 15.6 15.9 17.7 16.3 17.5 17.6 17.6 17.2 19.1 20.8 21.9 22.6 22.6   22 20.8 19.6 20.6 18.9 15.7 16.4
Idaho  7.8  8.1  8.2  8.4  8.2  8.2  8.6  8.8  8.9  9.5 10.0 10.1 10.5 10.8 10.9   11 11.2 10.8 12.1 13.1 13.9"

marriage <- read.table(textConnection(data), header = TRUE, na.strings = "---") %>%
  as_tibble() %>%
  rename_all(~ sub("X", "", .))

Pada titik ini, marriage seharusnya menjadi data Anda. Saya akan membuat sedikit modifikasi untuk mengubahnya menjadi tanggal.

marriage <- marriage %>%
  gather(key=year, value=rate, `2017`:`1990`)%>%
  mutate(year = make_date(year))

plot

Tidak ada perubahan pada kode plot Anda. Sumbunya ditangani secara alami.

ggplot(marriage, aes(x=year, y=rate, group=State)) +
  geom_point(aes(color=State)) +
  geom_line(aes(color=State)) +
  theme_bw()

keluaran grafik

person Adam    schedule 13.11.2019
comment
Mendapatkan kesalahan berikut dari ini, Error in is_string(x) : object '2017' not found - person subrinarafiq; 13.11.2019
comment
Saya telah memperbarui pertanyaan awal untuk mencerminkan beberapa baris pertama kumpulan data, saya memiliki kolom di bawah tahun tetapi itu akan menyebabkan R salah membaca file, itulah sebabnya saya harus membuangnya dari file csv saya bersama-sama . Saya memiliki deretan tahun dan kolom negara bagian. - person subrinarafiq; 13.11.2019
comment
Kumpulan datanya jelas mencakup seluruh 51 negara bagian, jadi saya telah menambahkan beberapa negara bagian lagi sehingga Anda dapat mengikuti masalah berikut. Ketika saya menjalankan perintah Anda setelah Anda mendefinisikan data, saya terus mendapatkan kesalahan, Kesalahan dalam pemindaian(file = file, apa = apa, sep = sep, kutipan = kutipan, dec = dec, : baris 9 tidak memiliki 22 elemen. Baris 9 memang memiliki 22 nilai. Georgia adalah satu-satunya negara bagian yang tidak memiliki nilai dan bahkan ketika saya memasukkan nilai secara sewenang-wenang, saya masih mendapatkan kesalahan. Ada ide tentang apa yang menyebabkan hal ini? - person subrinarafiq; 13.11.2019
comment
Saat saya memasukkan lebih banyak status, sumbu y mulai terlihat kewalahan. Jadi saya telah melakukannya dengan 30 negara bagian dan sumbu y mencantumkan setiap nilai tingkat pernikahan di negara bagian tersebut selama 21 tahun. Jadi saya rasa saya masih perlu menemukan cara untuk membatasi poros saya atau setidaknya mengubah skalanya. - person subrinarafiq; 14.11.2019
comment
Itu karena tipe data. Ia masih menganggap hal-hal ini bersifat kategoris. Anda perlu mengonversi x ke tanggal dan memastikan y adalah angka. - person Adam; 14.11.2019