做招聘的網(wǎng)站seo技術(shù)快速網(wǎng)站排名
一、引言
? ? ? ? 我們在對數(shù)據(jù)進(jìn)行可視化時遇到最頭疼、最常見的問題是什么?數(shù)據(jù)問題。
? ? ? ? 因為我們往往不會從零自己編程進(jìn)行可視化,往往是現(xiàn)有模板或積累,而正確的數(shù)據(jù)格式對應(yīng)正確的圖形包要求,一定會正確出圖,所以只有一個問題——數(shù)據(jù)格式問題。
? ? ? ? 在R中,絕大多數(shù)圖形要求的格式——都是長格式。
?二、定義
? ? ? ? ?何為長格式??
? ? ? ? ?運(yùn)行下面這個代碼,你會有所理解:
library(tidyr)
# 假設(shè)的寬格式數(shù)據(jù)(從長格式轉(zhuǎn)換而來)
wide_data <- data.frame( City = c("CityA", "CityB", "CityC"), Year = c(2020, 2020, 2020), Education = c(100, 110, 95), Healthcare = c(120, 130, 115), Transportation = c(80, 90, 75)
)
print(wide_data)
# 轉(zhuǎn)換為長格式數(shù)據(jù)
long_data <- pivot_longer(wide_data, cols = -c(City, Year), # 指定哪些列需要被轉(zhuǎn)換成長格式(除了City和Year) names_to = "Category", # 新增列的名稱,用于存儲原寬格式中的列名 values_to = "Expenditure") # 新增列的名稱,用于存儲原寬格式中的值
# 查看長格式數(shù)據(jù)
print(long_data)
我們習(xí)慣的寬格式如下(一個城市在某一年對應(yīng)的教育、健康及交通指數(shù)):?
這是轉(zhuǎn)化過后的長格式(將教育、健康及交通列進(jìn)行轉(zhuǎn)換):
? ? ? ? 也就是說, 我選定n列,這n列的列名重新生成一列(names_to),這n列的數(shù)據(jù)重新生成一列(values_to),這兩列相互對應(yīng)。
三、理解
? ? ? ? 為什么要這樣呢?
? ? ? ?我們都熟悉在R中是按列名操作數(shù)據(jù)的,如果是寬格式,那么寬,不方便操作。而轉(zhuǎn)換成長格式呢?我們就可以方便地對兩列數(shù)據(jù)進(jìn)行操作。
? ? ? ?并且要知道”組“的概念,上述例子中,有三個組別:CityA、B、C,而每一組又有三個標(biāo)簽(組別):教育、健康、交通。
? ? ? 運(yùn)行下面這個例子體會:
# 制作分組柱狀圖
ggplot(long_data, aes(x = Category, y = Expenditure, fill = Category)) + geom_bar(stat = "identity", position = "dodge") + # 使用identity統(tǒng)計量,并設(shè)置位置為分組(dodge) facet_wrap(~ City, scales = "free_y") + # 按城市分組,y軸比例自由調(diào)整 labs(title = "分組柱狀圖:不同城市的各類支出", x = "類別", y = "支出金額", fill = "類別") + theme_minimal() + # 使用簡約主題 theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 旋轉(zhuǎn)x軸標(biāo)簽以改善可讀性
? ? ? ? ?按城市為大組進(jìn)行分類:
運(yùn)行下述代碼:
ggplot(long_data, aes(x = City, y = Expenditure, fill = City)) + geom_bar(stat = "identity", position = "dodge") + # 使用identity統(tǒng)計量,并設(shè)置位置為分組(dodge) facet_wrap(~ Category, scales = "free_y") + # 按城市分組,y軸比例自由調(diào)整 labs(title = "分組柱狀圖:不同城市的各類支出", x = "類別", y = "支出金額", fill = "類別") + theme_minimal() + # 使用簡約主題 theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 旋轉(zhuǎn)x軸標(biāo)簽以改善可讀性
按照 教育、健康、交通為大組進(jìn)行分類:
到這里,相信你對長格式及數(shù)據(jù)格式的使用都有了深刻理解,自己去試試吧!