Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Mengapa grafik area bertumpuk saya di ggplot2 kosong

Saya akan mulai dengan pertanyaan kedua, yang lebih mudah. Menggunakan dplyr paket, Anda dapat menggunakan top_n untuk mendapatkan n baris terbesar untuk kolom tertentu. Misalnya:

> top_n(p_ash_r_100a, 3, SMPL_CNT) %>% arrange(desc(SMPL_CNT))
# A tibble: 3 × 5
            SMPL_TIME        SQL_ID     MODULE                   EVENT SMPL_CNT
               <dttm>         <chr>      <chr>                   <chr>    <int>
1 2017-04-11 09:01:00        NO_SQL GoldenGate                     CPU        7
2 2017-04-11 09:00:00 dgzp3at57cagd GoldenGate db file sequential read        2
3 2017-04-11 09:01:00 37cspa0acgqxp GoldenGate db file sequential read        2

Perhatikan bahwa Anda akan mendapatkan lebih dari n baris jika ada ikatan untuk tempat ke-n. Jadi top_n(p_ash_r_100, 10, SMPL_CNT) akan mengembalikan seluruh kumpulan data sampel karena dasi 17 arah untuk urutan ke-4.

Untuk pertanyaan pertama, dokumentasi untuk geom_area memberikan petunjuk:

Ini menunjukkan bahwa geom_area mengharapkan kolom yang dipetakan ke x harus numerik. Berdasarkan daftar untuk p_ash_r_100 , SMPL_TIME tampaknya menjadi vektor karakter. Dengan lubridate paket, kita dapat mengonversi SMPL_TIME ke tanggal-waktu dengan dmy_hm :

p_ash_r_100a <- p_ash_r_100 %>%
  mutate_at(vars(SMPL_TIME), dmy_hm)

Namun, ini tidak cukup untuk mendapatkan plot yang Anda inginkan karena ada beberapa nilai y untuk setiap kombinasi x dan fill (yang merupakan estetika yang benar untuk geom_area , bukan "col "). Kita perlu meringkas data sebelum membuat plot:

p_ash_r_100a %>%
  group_by(SMPL_TIME, EVENT) %>%
  summarise(total = sum(SMPL_CNT)) %>%
  ggplot(aes(SMPL_TIME, total, fill = EVENT)) +
  geom_area()

Namun plotnya masih belum benar. Ini karena setiap kombinasi SMPL_TIME dan EVENT tidak terwakili dalam kumpulan data. Kita perlu secara eksplisit memberi tahu geom_area y itu sama dengan nol untuk baris yang hilang. Salah satu caranya adalah dengan menggunakan fill handy yang praktis argumen di tidyr::spread .

group_by(p_ash_r_100a, SMPL_TIME, EVENT) %>%
  summarise(smpl_sum = sum(SMPL_CNT)) %>%
  spread(EVENT, smpl_sum, fill = 0) %>% 
  gather(EVENT, smpl_sum, CPU, `db file sequential read`, 
         `direct path write`,
         `Log archive I/O`) %>%
  ggplot(aes(x = SMPL_TIME, y = smpl_sum, fill = EVENT)) +
  geom_area()




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cari database oracle menggunakan php

  2. Apakah ada Spesifikasi ANSI untuk pernyataan PIVOT?

  3. Bagaimana menjalankan fungsi dbms_crypto di Oracle sebagai pengguna biasa?

  4. Cara lebih cepat untuk Menyisipkan, melalui skrip, di Oracle?

  5. Bagaimana cara Memilih substring di Oracle SQL hingga karakter tertentu?