我創建了以下情節:

來自這個 df 的更大版本(5 行,58 列):
df <- data.frame(row.names = c("ROBERT", "FRANK", "MICHELLE", "KATE"), `1` = c(31, 87, 22, 12), `2` = c(37, 74, 33, 20), `3` = c(35, 32, 44, 14))
colnames(df) <- c("1", "2", "3")
采用以下方式:
df = df %>%
rownames_to_column("Name") %>%
as.data.frame()
df <- melt(df , id.vars = 'Name', variable.name = 'ep')
ggplot(df, aes(ep,value)) geom_line(aes(colour = Name, group=Name))
情節有點顯示我想要的,但它確實是一團糟。有沒有人有一個建議可以幫助我提高它的可讀性?很感謝任何形式的幫助!
uj5u.com熱心網友回復:
以下是一些用于在少量案例中可視化大量資料點的選項。這些用txhousing包含在 中的資料子集來說明ggplot2。
解決方案 1:刻面
正如@rdelrossi 建議的那樣,一種解決方案是通過以下方式進行刻面Name:
library(ggplot2)
ggplot(df, aes(ep,value))
geom_line(aes(colour = Name, group=Name), show.legend = FALSE)
scale_x_continuous(expand = c(0,0))
facet_wrap(vars(Name), ncol = 1, scales = "free_x")
theme_bw()
解決方案 2:平滑
用于geom_smooth()平滑區域波動以查看更大的長期趨勢:
ggplot(df, aes(ep,value))
geom_smooth(
aes(colour = Name, group=Name),
se = FALSE,
span = 1, # higher number = smoother
size = 1.25
)
scale_x_date(expand = c(0,0))
theme_bw()
解決方案 3:千層面
有時稱為“千層面圖”,這是一個熱圖,其中 y 軸上的案例,x 軸上的時間(或其他),以及映射到顏色的值。這是比較個人內部(從左到右)和(上下)個人變化的不同方式。
ggplot(df, aes(ep, Name, colour = value, fill = value))
geom_tile(size = .5)
scale_fill_viridis_c(option = "B", aesthetics = c("colour", "fill"))
coord_cartesian(expand = FALSE)
theme(
axis.text.y = element_text(size = 12, face = "bold"),
axis.title.y = element_blank()
)
(可能需要點擊查看大圖)
資料準備:
library(dplyr)
library(lubridate)
df <- txhousing %>%
filter(
city %in% c("Beaumont", "Amarillo", "Arlington", "Corpus Christi", "El Paso"),
between(year, 2004, 2012)
) %>%
group_by(city) %>%
mutate(
Name = city,
value = scale(sales),
ep = ym(str_c(year, month))
) %>%
ungroup()
uj5u.com熱心網友回復:
如果您的可讀性問題只是x軸標簽,那么我認為主要問題是當您使用reshape2::melt()結果時列ep是 afactor這意味著x您的繪圖軸將顯示所有級別并變得擁擠。解決方案是將其轉換為numeric,然后它將以合理的方式調整標簽。
我替換了您在 {tidyverse} 中的使用,但您的原始代碼仍然可以使用reshape2::melt()。tidyr::pivot_longer()
library(tidyverse)
df <- structure(list(`1` = c(31, 87, 22, 12), `2` = c(37, 74, 33, 20), `3` = c(35, 32, 44, 14)), class = "data.frame", row.names = c("ROBERT", "FRANK", "MICHELLE", "KATE"))
df %>%
rownames_to_column("Name") %>%
pivot_longer(-Name, names_to = "ep") %>%
mutate(ep = as.numeric(ep)) %>%
ggplot(aes(ep, value, color = Name))
geom_line()

由
您也可以添加facet_grid(~Name)

您也可以添加
geom_text(aes(label=value), position = position_stack(vjust = .5))

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/440270.html
