iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
Python

Python和R入門語法比較系列 第 26

13 [R] 畫長條圖統計 [16th 鐵人 Day 26]

  • 分享至 

  • xImage
  •  

點我下載:song_rank3.csv

讀檔

setwd('/Users/carplee/Desktop/files/IT python')
p = read.csv('data/song_rank3.csv')

https://ithelp.ithome.com.tw/upload/images/20240923/20162398fQwAHV32or.png

取art2欄非空值者

df[df$欄位!=" "]

a2 = p$art2!=""

https://ithelp.ithome.com.tw/upload/images/20240923/20162398l6WsSbdCHU.png

用df[bool]篩選

p[a2, ]
   Rank  Hits         Song Co      art1   art2
2     2 74629        勇氣  是    魏嘉瑩 魏如昀
3     3 62531 沒什麼大不了 是    陳芳語 茄子蛋
4     4 38971          我  是    蕭敬騰   馬佳
6     6  7023  愛情限時批  是 琳誼 Ring 許富凱
13   13  2222        力量  是    魏嘉瑩 魏如昀
14   14  1083       很重要 是    陳芳語 茄子蛋
              Artist       Date
2     魏嘉瑩, 魏如昀 2021-07-27
3    陳芳語 , 茄子蛋 2021-08-06
4       蕭敬騰, 馬佳 2021-08-06
6  琳誼 Ring, 許富凱 2021-08-01
13    魏嘉瑩, 魏如昀 2021-07-12
14   陳芳語 , 茄子蛋 2021-08-09
                                                                    Url
2  https://www.kkbox.com/tw/tc/song/PLQ004POLLr78J1P78J1P0XL-index.html
3  https://www.kkbox.com/tw/tc/song/uX800A9O0.rHGjNHHGjNH0XL-index.html
4  https://www.kkbox.com/tw/tc/song/kZd00W8WP.rkDPo9kDPo90XL-index.html
6  https://www.kkbox.com/tw/tc/song/Gpb00L-OOTrXdqOPXdqOP0XL-index.html
13 https://www.kkbox.com/tw/tc/song/PLQ004POLLr78J1P78J1P0XL-index.html
14 https://www.kkbox.com/tw/tc/song/uX800A9O0.rHGjNHHGjNH0XL-index.html
   Artist2
2        0
3        0
4        0
6        0
13       0
14       0
library(dplyr)
count(p[a2,])
  n
1 6
count(p[!a2,])
  n
1 8

獨唱有8首 合唱有6首

single = as.numeric(count(p[a2,]))
co = as.numeric(count(p[!a2,]))

single 6
co 8

使用ggplot2畫長條圖

library(ggplot2)

建立

x軸資料: '獨唱', '合唱'

y軸資料: 8, 6

x = c("獨唱","合唱")
y = c(single, co)

ggplot(x) x必須是data.frame格式

df = data.frame(type=x, cnt=y)

https://ithelp.ithome.com.tw/upload/images/20240923/201623988uyGaqlgfb.png

畫長條圖 way1

ggplot(df, aes(type,cnt))+geom_col()

https://ithelp.ithome.com.tw/upload/images/20240923/20162398evDBIQfMGm.png

畫長條圖 way2

ggplot(df, aes(type, cnt))+geom_bar(stat = 'identity')

調整字體

ggplot(df, aes(type,cnt))+
  geom_col()+
  theme(text = element_text(family = "Heiti TC"))

https://ithelp.ithome.com.tw/upload/images/20240923/20162398YyL8ZTga1n.png

調整條寬

ggplot(df, aes(type,cnt))+
  geom_col(width=0.5)+
  theme(text = element_text(family = "Heiti TC"))

https://ithelp.ithome.com.tw/upload/images/20240923/20162398Vmcmd3Wa1l.png

調整長條底的對齊 # 0:對齊左下角 1:對齊右下角

ggplot(df, aes(type,cnt))+
  geom_col(width=0.5, just = 1)+
  theme(text = element_text(family = "Heiti TC"))

https://ithelp.ithome.com.tw/upload/images/20240923/20162398bELjKJASZj.png

加入標題

ggplot(df, aes(type,cnt))+
  geom_col(width=0.5, just = 1)+
  ggtitle(label = "華語歌曲榜統計")+
  theme(text = element_text(family = "Heiti TC"))

https://ithelp.ithome.com.tw/upload/images/20240923/20162398xGVhrou8KI.png

加入x軸標籤

ggplot(df, aes(type,cnt))+
  geom_col(width=0.5, just = 1)+
  ggtitle(label = "華語歌曲榜統計")+
  xlab('歌曲分類') +
  theme(text = element_text(family = "Heiti TC"))

https://ithelp.ithome.com.tw/upload/images/20240923/20162398ytrJRWOgCC.png

加入y軸標籤

ggplot(df, aes(type,cnt))+
  geom_col(width=0.5, just = 1)+
  ggtitle(label = "華語歌曲榜統計")+
  xlab('歌曲分類') +
  ylab('數量') +
  theme(text = element_text(family = "Heiti TC"))  

https://ithelp.ithome.com.tw/upload/images/20240923/20162398XeUmHo6OFC.png

旋轉y軸標籤

ggplot(df, aes(type,cnt))+
  geom_col(width=0.5, just = 1)+
  ggtitle(label = "華語歌曲榜統計")+
  xlab('歌曲分類') +
  ylab('數量') +
  theme(text = element_text(family = "Heiti TC"),
        axis.title.y = element_text(angle=0))  

https://ithelp.ithome.com.tw/upload/images/20240923/201623988JB2Lp6OOL.png

內容預告:

14 [Python] for迴圈 和 matplotlib.pyplot 畫線圖

14 [R]for迴圈 和 ggplot 畫線圖

15 for 迴圈 和 html網頁資料解析 迴圈 和 html網頁資料解析


上一篇
13 [Python] 畫長條圖統計 [16th 鐵人 Day 25]
下一篇
14 [Python] for迴圈 和 matplotlib.pyplot 畫線圖 [16th 鐵人 Day 27]
系列文
Python和R入門語法比較30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言