R语言数据可视化包:
knitr::opts_chunk$set(echo = TRUE, eval = TRUE, tidy = TRUE, highlight = TRUE, warning = FALSE, error = FALSE, message = FALSE, include = TRUE,fig.width = 9.4,fig.height = 4)
require(devtools)
# install_github('rCharts', 'ramnathv') install_github('yihui/recharts')
# install.packages('plotly') install_github('Lchiffon/REmap')
# install.packages('igraph') install.packages('networkD3')
library(plotly)
1、添加注释:add_annotations(p, text = NULL, …, data = NULL, inherit = TRUE)
# single annotation
plot_ly(mtcars, x = ~wt, y = ~mpg) %>% slice(which.max(mpg)) %>% add_annotations(text = "Good mileage")
# multiple annotations
plot_ly(mtcars, x = ~wt, y = ~mpg) %>% filter(gear == 5) %>% add_annotations("five cylinder",
ax = 40)
2、添加数据:add_data(p, data = NULL)
plot_ly() %>% add_data(economics) %>% add_trace(x = ~date, y = ~pce)
3、添加函数:add_fun(p, fun, …)
txhousing %>% group_by(city) %>% plot_ly(x = ~date, y = ~median) %>% add_lines(alpha = 0.2,
name = "Texan Cities") %>% add_fun(function(plot) {
plot %>% filter(city == "Houston") %>% add_lines(name = "Houston")
}) %>% add_fun(function(plot) {
plot %>% filter(city == "San Antonio") %>% add_lines(name = "San Antonio")
})
plot_ly(mtcars, x = ~wt, y = ~mpg) %>% add_markers() %>% add_fun(function(p) {
p %>% slice(which.max(mpg)) %>% add_annotations("Good mileage")
}) %>% add_fun(function(p) {
p %>% slice(which.min(mpg)) %>% add_annotations(text = "Bad mileage")
})
4、add_trace: Add trace(s) to a plotly visualization
参数说明:
head(economics)
## # A tibble: 6 × 6
## date pce pop psavert uempmed unemploy
## <date> <dbl> <int> <dbl> <dbl> <int>
## 1 1967-07-01 507.4 198712 12.5 4.5 2944
## 2 1967-08-01 510.5 198911 12.5 4.7 2945
## 3 1967-09-01 516.3 199113 11.7 4.6 2958
## 4 1967-10-01 512.9 199311 12.5 4.9 3143
## 5 1967-11-01 518.1 199498 12.5 4.7 3066
## 6 1967-12-01 525.8 199657 12.1 4.8 3018
p <- plot_ly(economics, x = ~date, y = ~uempmed)
p
p %>% add_text(text = ".")
plot_ly(economics, x = ~date, y = ~uempmed, color = I("red")) %>% add_lines() %>%
add_markers(color = ~pop) %>% layout(showlegend = FALSE)
txhousing %>% group_by(city) %>% plot_ly(x = ~date, y = ~median) %>% add_lines(fill = "black")
ggplot2::map_data("world", "canada") %>% group_by(group) %>% plot_ly(x = ~long,
y = ~lat) %>% add_polygons(hoverinfo = "none") %>% add_markers(text = ~paste(name,
"<br />", pop), hoverinfo = "text", data = maps::canada.cities) %>% layout(showlegend = FALSE)
plot_ly(economics, x = ~date) %>% add_ribbons(ymin = ~pce - 1000, ymax = ~pce +
1000)
p <- plot_ly(plotly::wind, r = ~r, t = ~t) %>% add_area(color = ~nms)
layout(p, radialaxis = list(ticksuffix = "%"), orientation = 270)
ds <- data.frame(labels = c("A", "B", "C"), values = c(10, 40, 60))
head(ds)
## labels values
## 1 A 10
## 2 B 40
## 3 C 60
plot_ly(ds, labels = ~labels, values = ~values) %>% add_pie() %>% layout(title = "Basic Pie Chart using Plotly")
library(dplyr)
mtcars %>% count(vs) %>% plot_ly(x = ~vs, y = ~n) %>% add_bars()
plot_ly(x = ~rnorm(100)) %>% add_histogram()
plot_ly(x = ~LETTERS, y = ~LETTERS) %>% add_histogram2d()
z <- as.matrix(table(LETTERS, LETTERS))
plot_ly(x = ~LETTERS, y = ~LETTERS, z = ~z) %>% add_histogram2d()
plot_ly(MASS::geyser, x = ~waiting, y = ~duration) %>% add_histogram2dcontour()
plot_ly(z = ~volcano) %>% add_heatmap()
plot_ly(z = ~volcano) %>% add_contour()
plot_ly(mtcars, x = ~factor(vs), y = ~mpg) %>% add_boxplot()
plot_ly(z = ~volcano) %>% add_surface()
plot_ly(x = c(0, 0, 1), y = c(0, 1, 0), z = c(0, 0, 0)) %>% add_mesh()
rangeslider:给X轴添加范围滑动器
rangeslider(p, start = NULL, end = NULL, …)
head(USAccDeaths)
## [1] 9007 8106 8928 9137 10017 10826
plot_ly(x = time(USAccDeaths), y = USAccDeaths) %>% add_lines() %>% rangeslider()
d <- tibble::tibble(time = seq(as.Date("2016-01-01"), as.Date("2016-08-31"),
by = "days"), y = rnorm(seq_along(time)))
plot_ly(d, x = ~time, y = ~y) %>% add_lines() %>% rangeslider(d$time[5], d$time[50])
plotly()
plot_ly(data = data.frame(), …, type = NULL, color, colors = NULL, alpha = 1, symbol, symbols = NULL, size, sizes = c(10, 100), linetype, linetypes = NULL, split, frame, width = NULL, height = NULL, source = “A”)
head(economics)
## # A tibble: 6 × 6
## date pce pop psavert uempmed unemploy
## <date> <dbl> <int> <dbl> <dbl> <int>
## 1 1967-07-01 507.4 198712 12.5 4.5 2944
## 2 1967-08-01 510.5 198911 12.5 4.7 2945
## 3 1967-09-01 516.3 199113 11.7 4.6 2958
## 4 1967-10-01 512.9 199311 12.5 4.9 3143
## 5 1967-11-01 518.1 199498 12.5 4.7 3066
## 6 1967-12-01 525.8 199657 12.1 4.8 3018
plot_ly(economics, x = ~pop, color = I("red"), alpha = 0.5)
plot_ly(economics, x = ~pop, colors = "YlOrRd", alpha = 0.5)
plot_ly(economics, x = ~date, y = ~pop, type = "area")
# 矩阵数据volcano:
str(volcano)
## num [1:87, 1:61] 100 101 102 103 104 105 105 106 107 108 ...
plot_ly(z = ~volcano)
plot_ly(z = ~volcano, type = "surface")
plot_ly(economics, x = ~date, y = ~unemploy/pop, type = "scatter")
add_lines(plot_ly(economics, x = ~date, y = ~unemploy/pop))
# 使用管道函数%>%,便于阅读代码
economics %>% plot_ly(x = ~date, y = ~unemploy/pop) %>% add_lines()
plot_ly(economics, x = ~date, color = I("black")) %>% add_lines(y = ~uempmed) %>%
add_lines(y = ~psavert, color = I("red"))
p <- plot_ly(iris, x = ~Sepal.Width, y = ~Sepal.Length)
add_markers(p, color = ~Petal.Length, size = ~Petal.Length)
add_markers(p, color = ~Species)
add_markers(p, color = ~Species, colors = "Set1")
add_markers(p, symbol = ~Species)
add_paths(p, linetype = ~Species)
# install.packages('crosstalk')
library(crosstalk)
sd <- SharedData$new(mtcars)
subplot(plot_ly(sd, x = ~wt, y = ~mpg, color = I("black")), plot_ly(sd, x = ~wt,
y = ~disp, color = I("black"))) %>% hide_legend() %>% highlight(color = "red")
d <- SharedData$new(txhousing, ~city)
plot_ly(d, x = ~date, y = ~median, color = I("black")) %>% group_by(city) %>%
add_lines() %>% highlight(on = "plotly_hover", color = "red")
showRGB(toRGB(colors())[1:10], labels = 0)
subplot: 将多个图表绘制在一页中
subplot(…, nrows = 1, widths = NULL, heights = NULL, margin = 0.02, shareX = FALSE, shareY = FALSE, titleX = shareX, titleY = shareY, which_layout = “merge”)
p1 <- plot_ly(economics, x = ~date, y = ~uempmed)
p2 <- plot_ly(economics, x = ~date, y = ~unemploy)
subplot(p1, p2, p1, p2, nrows = 2, margin = 0.05)
p1 <- add_lines(p1, color = I("black"), name = "1st", legendgroup = "1st")
p2 <- add_lines(p2, color = I("red"), name = "2nd", legendgroup = "2nd")
subplot(p1, style(p1, showlegend = FALSE), p2, style(p2, showlegend = FALSE),
nrows = 2, margin = 0.05)
economics_long %>% split(.$variable) %>% lapply(function(d) plot_ly(d, x = ~date,
y = ~value)) %>% subplot(nrows = NROW(.), shareX = TRUE)
economics_long %>% group_by(variable) %>% do(p = plot_ly(., x = ~date, y = ~value)) %>%
subplot(nrows = NROW(.), shareX = TRUE)