ECharts,是百度的一個開源的數(shù)據(jù)可視化工具,一個純 Javascript 的圖表庫。echarts4r包是ECharts的R語言接口,目前可以從CRAN是直接安裝。echarts4r語法結(jié)構(gòu)簡單,易用,可讀性很好,是很好的交互式繪圖包。
本文介紹echarts4r的常規(guī)交互式圖形,交互式圖形可以用在rmarkdown和shiny應(yīng)用中。
安裝包
install.packages("echarts4r")
散點圖
echarts4r作圖第一步用e_charts
函數(shù)創(chuàng)建一個echarts4r對象,函數(shù)第一個參數(shù)為數(shù)據(jù),第二個參數(shù)為x軸數(shù)據(jù),第二步以及后續(xù)都是用%>%
管道操作符來進(jìn)一步作圖。
繪制散點圖,用iris
數(shù)據(jù),x軸為Sepal.Length。y軸為Petal.Length,在e_scatter
中定義為serie
。通過group_by
根據(jù)Sepal.Length進(jìn)行分組,在圖中表現(xiàn)為不同顏色。散點大小通過size
參數(shù)設(shè)置。
library(echarts4r)
iris %>%
group_by(Species) %>%
e_charts(x = Sepal.Length) %>%
e_scatter(serie = Petal.Length, size = Sepal.Width)
scatter.png
對比一下ggplot2的散點圖語法。
library(ggplot2)
iris %>%
ggplot(aes(x=Sepal.Length,y=Petal.Length,size=Sepal.Width,col=Species))+
geom_point()
ggplot2_scatter.png
柱狀圖
df <- data.frame(
x = seq(50),
y = rnorm(50, 10, 3),
z = rnorm(50, 11, 2),
w = rnorm(50, 9, 2)
)
df %>%
e_charts(x) %>%
e_bar(y, name = "bar") %>%
e_title("Bar and step charts")
bar.png
極坐標(biāo)圖
df %>%
e_charts(x) %>%
e_polar() %>%
e_angle_axis(x) %>% # angle = x
e_radius_axis() %>%
e_bar(y, coord_system = "polar") %>%
e_scatter(z, coord_system = "polar")
radius.png
漏斗圖
funnel <- data.frame(stage = c("View", "Click", "Purchase"), value = c(80, 30, 20))
funnel %>%
e_charts() %>%
e_funnel(value, stage) %>%
e_title("Funnel")
funnel.png
熱力圖
v <- LETTERS[1:10]
matrix <- data.frame(
x = sample(v, 300, replace = TRUE),
y = sample(v, 300, replace = TRUE),
z = rnorm(300, 10, 1),
stringsAsFactors = FALSE
) %>%
dplyr::group_by(x, y) %>%
dplyr::summarise(z = sum(z)) %>%
dplyr::ungroup()
matrix %>%
e_charts(x) %>%
e_heatmap(y, z) %>%
e_visual_map(z) %>%
e_title("Heatmap")
heatMap.png
日歷圖
dates <- seq.Date(as.Date("2017-01-01"), as.Date("2018-12-31"), by = "day")
values <- rnorm(length(dates), 20, 6)
year <- data.frame(date = dates, values = values)
year %>%
e_charts(date) %>%
e_calendar(range = "2018") %>%
e_heatmap(values, coord_system = "calendar") %>%
e_visual_map(max = 30) %>%
e_title("Calendar", "Heatmap")
calendar.png
儀表盤
e_charts() %>%
e_gauge(41, "PERCENT") %>%
e_title("Gauge")
gauge.png
雷達(dá)圖
df <- data.frame(
x = LETTERS[1:5],
y = runif(5, 1, 5),
z = runif(5, 3, 7)
)
df %>%
e_charts(x) %>%
e_radar(y, max = 7, name = "radar") %>%
e_radar(z, max = 7, name = "chart") %>%
e_tooltip(trigger = "item")
radar.png
詞云
words <- function(n = 5000) {
a <- do.call(paste0, replicate(5, sample(LETTERS, n, TRUE), FALSE))
paste0(a, sprintf("%04d", sample(9999, n, TRUE)), sample(LETTERS, n, TRUE))
}
tf <- data.frame(terms = words(100),
freq = rnorm(100, 55, 10)) %>%
dplyr::arrange(-freq)
tf %>%
e_color_range(freq, color) %>%
e_charts() %>%
e_cloud(terms, freq, color, shape = "circle", sizeRange = c(3, 15)) %>%
e_title("Wordcloud", "Random strings")
cloud.png