您以错误的方式使用该text
物业。
ggvis
ggvis
它本身仅在 R 中执行数据绑定和处理。然后它将对象“翻译”为由 定义的可视化语法,该语法建立在执行实际渲染的vega.js
基础之上。d3.js
因此,add_axis
它只是一个ggvis
用于在vega.js
. 您可以使用此文档找到更多相关信息。
您几乎可以看到您传递给add_axis()
函数的参数与您将在vega.js
. 因此,properties=axis_props(...)
在ggvis
映射到Axis 属性的属性(我知道这听起来可能令人困惑。但是单击上面的链接,您会在那里看到层次结构)。
属性参数将定义,我在这里引用文档,
自定义轴样式的可选标记属性定义。输入对象可以包括刻度(主要和次要)、majorTicks、minorTicks、标签和轴(用于轴线)的子对象。
因此,properties参数只应该更改样式,包括labels
、ticks
和axis
线条的样式。
你的代码:
properties=axis_props(labels=list(angle=90, fontSize = 10,
text = c("one","two","three"))
可以抽象为
properties=axis_props(labels=list(...))
根据我们上面的讨论,它正在操纵轴的样式labels
。每个label
都是简单的 SVG<text>
元素,可以在本文档中找到其可调整的属性。通过修改轴标签的样式,您可以更改所有x 轴标签的样式。
最后,这意味着通过指定text = c("one","two","three")
,您最终会手动将每个 x 轴刻度标签设置为一个数组 ["one", "two", "three"]
,将其连接起来形成字符串one,two,three
。
解决方案
默认情况下,ggvis
将为您确定轴属性,包括
这就是在不指定 的情况下add_axis("y", ...)
最终得到一个很好渲染的 y 轴的方式。但是您可以通过在函数中指定values
属性来手动覆盖刻度。add_axis()
例如,
data.frame(x = c(1,2,3), y = c(1,2,3) ) %>%
ggvis(~x,~y ) %>%
layer_lines() %>%
add_axis("x",
value=c(1, 2, 3),
properties=axis_props(
labels=list(angle=90, fontSize = 10)))
这给了我们:
更接近,但还没有,因为标签是数字,而不是你想要的字符串。
最后,为了更改标签,我们可以简单地将 X 轴上的数据从数字更改为因子,例如:
x <- factor(c(1,2,3), labels=c("one", "two", "three"))
data.frame(x = x, y = c(1,2,3) ) %>%
ggvis(~x,~y ) %>%
layer_lines() %>%
add_axis("x", values=x,
properties=axis_props(labels=list(angle=90, fontSize = 10)))
这会给你