首先,加载recharts
:
library(recharts)
适当的标注点让成图更有信息性。我们可以用addMarkPoint
(或简写为addMP
) 一个系列一系列、一个时间轴切片一个时间轴切片地添加标注点. 也可以用overideMarkPoint
(或简写为 overideMP
) 覆写已有的标注点。
所有函数名都有小驼峰法和小写连划线(Hadly Wickham推荐此法)两种形式。为了便于偷懒,还有缩写版(如markPoint缩写成mp)。
addMarkPoint(chart, series = NULL, timeslots = NULL, data = NULL,
clickable = TRUE, symbol = "pin", symbolSize = 10,
symbolRotate = NULL, large = FALSE, effect = list(show = FALSE),
itemStyle = NULL, ...)
addMP(chart, series = NULL, timeslots = NULL, data = NULL,
clickable = TRUE, symbol = "pin", symbolSize = 10,
symbolRotate = NULL, large = FALSE, effect = list(show = FALSE),
itemStyle = NULL, ...)
add_markpoint(chart, series = NULL, timeslots = NULL, data = NULL,
clickable = TRUE, symbol = "pin", symbolSize = 10,
symbolRotate = NULL, large = FALSE, effect = list(show = FALSE),
itemStyle = NULL, ...)
add_mp(chart, series = NULL, timeslots = NULL, data = NULL,
clickable = TRUE, symbol = "pin", symbolSize = 10,
symbolRotate = NULL, large = FALSE, effect = list(show = FALSE),
itemStyle = NULL, ...)
addMarkpoint(chart, series = NULL, timeslots = NULL, data = NULL,
clickable = TRUE, symbol = "pin", symbolSize = 10,
symbolRotate = NULL, large = FALSE, effect = list(show = FALSE),
itemStyle = NULL, ...)
overideMarkPoint(chart, ...)
overideMarkpoint(chart, ...)
overideMP(chart, ...)
overide_mp(chart, ...)
overide_markpoint(chart, ...)
overideMP
等价于addMP(mode='overide', ...)
.
参数 | 要求 |
---|---|
chart |
|
series |
数值型(系列索引值)或文本型(系列名称),前者更好。如设为NULL,则作用于所有系列。 |
timeslots |
数值型(时间轴切片索引值)或文本型(时间轴切片名称),前者更好。如设为NULL,则作用于所有时间轴切片。可简写为z. |
data |
标注点源数据,数据框形式。必须包含下列列:
注意 标注线数据集兼容于
|
clickable |
逻辑型,数据图形是否可以点击,默认为TRUE. |
symbol |
标注点图标,参见 |
symbolSize |
数值型向量 |
symbolRotate |
数值型 -180 ~ 180. 默认为NULL. |
large |
数值型, 是否开启大规模效果. 默认为FALSE. |
effect |
列表,标注点效果配置器。默认为NULL, 即 |
itemStyle |
列表,结构为 |
mode |
将标注点的data部分’add’ 或 ‘overide’到echarts对象. 默认为’add’. 也可以直接用 |
… |
省略号 |
下例来自Scatterplot Manual.
我们分别向数据系列1 (‘setosa’)和2 (‘versicolor’)添加最大、最小值标注点,在另外添加两个绝对位置标注点。
第三个标注点的数据结构比较特别,是一个数据框,包含这些列:‘name’, ‘value’, ‘xAxis’, ‘yAxis’。这是直角坐标系唯一接受的标注点数据结构。
第四个标注点的数据结构是通用结构,x和y对应画布坐标。然而在直角坐标系中却无法正确显示,只能被放在坐标系的零点。
g = echartr(iris, Sepal.Width, Petal.Width, Species) %>%
setToolbox(show=FALSE) %>% setTheme(width=400, height=300)
|
|
|
|
可以把上述三个标注点的数据框合并为一个,包含这些有效列: ‘name’, ‘type’, ‘series’, 等。其中,’series’必须与series
参数对应 (即,数据框的每一行都映射到 addMP
的series
向量).
data <- data.frame(
name=c('Max', 'Min', 'Misc', 'Not Known'), type=c('max', 'min', NA, NA),
series=c(levels(iris$Species), 'Not Known'), x=c(NA, NA, NA, 350),
y=c(NA, NA, NA, 300), xAxis=c(NA, NA, 3, NA), yAxis=c(NA, NA, 5, NA))
knitr::kable(data)
name | type | series | x | y | xAxis | yAxis |
---|---|---|---|---|---|---|
Max | max | setosa | NA | NA | NA | NA |
Min | min | versicolor | NA | NA | NA | NA |
Misc | NA | virginica | NA | NA | 3 | 5 |
Not Known | NA | Not Known | 350 | 300 | NA | NA |
echartr(iris, Sepal.Width, Petal.Width, Species) %>%
addMP(series=c(levels(iris$Species), 'Not Known'), data=data)
对于非直角坐标系(如极坐标、地理坐标),不要提供映射到坐标轴的数据结构。对于极坐标系,x和y对应于画布坐标,而在地理坐标系里,必须用addGeoCoord
传入所涉及的坐标,而不能直接用addMP
来传。
注意,画布坐标的零点是左上角。
用Pie Chart Manual中的例子。
titanic <- data.table::melt(apply(Titanic, c(1,4), sum))
names(titanic) <- c('Class', 'Survived', 'Count')
g <- echartr(titanic, Survived, Count, facet=Class, type='pie')
## Warning in split_indices(.group, .n): '.Random.seed' is not an integer
## vector but of type 'NULL', so ignored
data <- data.frame(
name=rep('', 4), value=1:4, x=c(190, 490, 190, 490), y=c(132, 132, 348, 348)
)
knitr::kable(data)
name | value | x | y |
---|---|---|---|
1 | 190 | 132 | |
2 | 490 | 132 | |
3 | 190 | 348 | |
4 | 490 | 348 |
g %>% addMP(series='Series Index', data=data) %>%
setSeries(series='Series Index', type='scatter')