首先,加载recharts
:
library(recharts)
散点图scatter包含两种基本类型:
关键是:
x
和y
为数值型weight
echartr(data, x, y, <series>, <weight>, <t>, <type>)
参数 | 要求 |
---|---|
data |
数据框格式的源数据 |
x |
数值型自变量。若提供多个变量,则只传入第一个。 |
y |
数值型应变量。若提供多个变量,则只传入第一个。 |
series |
数值型系列变量,处理为因子。若提供多个变量,则只传入第一个。 |
weight |
数值型权重变量,若提供多个变量,则只传入第一个。 |
t |
时间轴变量,处理为因子。若提供多个变量,则只传入第一个。 |
type |
|
如未指定series
,则不显示图例。
echartr(iris, x=Sepal.Width, y=Petal.Width)
该命令等价于
echartr(iris, Sepal.Width, Petal.Width, type='scatter') echartr(iris, ~Sepal.Width, Petal.Width, type='point') echartr(iris, Sepal.Width, "Petal.Width", type='bubble') echartr(iris, ~Sepal.Width, "Petal.Width", type='auto') ...
echartr(iris, x=Sepal.Width, y=Petal.Width, series=Species)
时间轴要求数值型或日期/时间型的Z
变量。如果传入文本型变量,echartr
会将其转为因子,并用其索引值作图,因子标签作为时间轴标签。
echartr(iris, Sepal.Width, Petal.Width, z=Species)
关键是传入有效的数值型weight
变量。如果weight
被接受,且type
为’bubble’,可生成气泡图。
echartr(iris, Sepal.Width, Petal.Width, weight=Petal.Length, type='bubble')
如type
是’scatter’/‘point’,不会显示气泡图,但weight
可映射dataRange
控件。
echartr(iris, Sepal.Width, Petal.Width, weight=Petal.Length) %>%
setDataRange(calculable=TRUE, splitNumber=0, labels=c('Big','Small'),
color=c('red', 'yellow', 'green'), valueRange=c(0, 2.5))
带时间轴的多系列分组气泡图与同类型的散点图相仿。
接下来可以配置控件、添加标注点/标注线,以及美化成图。
addMarkLine
And addMarkPoint
可以拟合一条回归曲线,并定义标注线的两个点。
lm <- with(iris, lm(Petal.Width~Sepal.Width))
pred <- predict(lm, data.frame(Sepal.Width=c(2, 4.5)))
echartr(iris, Sepal.Width, Petal.Width, Species) %>%
addML(series=1, data=data.frame(name1='Max', type='max')) %>%
addML(series=2, data=data.frame(name1='Mean', type='average')) %>%
addML(series=3, data=data.frame(name1='Min', type='min')) %>%
addMP(series=2, data=data.frame(name='Max', type='max')) %>%
addML(series='Linear Reg', data=data.frame(
name1='Reg', value=lm$coefficients[2],
xAxis1=2, yAxis1=pred[1], xAxis2=4.5, yAxis2=pred[2]))
你可以一个系列一个系列地添加标注线/标注点,如同上例所示。但有时用户可能希望一次性给多个数据系列添加标注线/标注点,可以在data
中添加一个series
变量,映射到addML/addMP
函数的参数series
。
data <- data.frame(
name1=c('Max', 'Mean', 'Min'), type=c('max', 'average', 'min'),
series=levels(iris$Species))
echartr(iris, Sepal.Width, Petal.Width, Species) %>%
addML(series=1:3, data=data) %>%
addMP(series=2, data=data.frame(name='Max', type='max')) %>%
addML(series='Linear Reg', data=data.frame(
name1='Reg', value=lm$coefficients[2],
xAxis1=2, yAxis1=pred[1], xAxis2=4.5, yAxis2=pred[2]))
参考相关函数,尽情探索吧。