gpt4 book ai didi

r - 如何使用 ggvis 标记绘图刻度线

转载 作者:行者123 更新时间:2023-12-04 22:31:05 26 4
gpt4 key购买 nike

我正在尝试更改 ggvis 中的刻度标签阴谋。我的数据点是 x = c(1,2,3)y = c(1,2,3) .但是,下面的代码会产生完全没有意义的刻度标签!

library(dplyr)
library(ggvis)
data.frame(x = c(1,2,3), y = c(1,2,3) ) %>%
ggvis(~x,~y ) %>%
layer_lines() %>%
add_axis("x", properties=axis_props(
labels=list(angle=90, fontSize = 10, text = c("one","two","three" ) )
)
)

给出:

enter image description here

我想我也必须格式化刻度,或者至少告诉 ggvis标记哪个刻度?

最佳答案

您正在使用 text属性(property)以错误的方式。
ggvis它本身只在 R 中执行数据绑定(bind)和处理。然后它“翻译”ggvis对象转化为 vega.js 定义的可视化语法,它建立在 d3.js 之上执行实际渲染。

所以,add_axis只是 ggvis 中的一个薄包装用于在 vega.js 中定义轴属性.您可以使用 this document 找到更多相关信息。 .

您几乎可以看到您传递给 add_axis() 的参数函数与您将在 vega.js 中指定的 JSON 规范具有一对一的映射关系。 .
因此,properties=axis_props(...)ggvis映射到 房产 Axis properties (我知道这听起来可能令人困惑。但点击上面的链接,你会看到那里的层次结构)。

房产 参数将定义,我在这里引用文档,

Optional mark property definitions for custom axis styling. The input object can include sub-objects for ticks (both major and minor), majorTicks, minorTicks, labels and axis (for the axis line).



因此, 房产 参数应该只改变 造型 ,包括 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>元素,其可调整的属性可以是 found in this document .并通过修改 造型轴标签,您更改 造型全部 x 轴标签。

最后,这意味着通过指定 text = c("one","two","three") ,您最终会手动 将每个 x 轴刻度标签设置为数组 ["one", "two", "three"] , 连接起来形成字符串 one,two,three .

解决方案

默认情况下, ggvis将为您确定轴属性,包括
  • 轴上有多少刻度?
  • 刻度的值是多少?

  • 这就是方法,无需指定 add_axis("y", ...) ,你最终得到一个很好的渲染 y 轴。
    但是您可以通过指定 values 来手动覆盖刻度。位于 add_axis() 的属性(property)功能。

    例如,
    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)))

    这给了我们:

    enter image description here

    更接近,但还没有,因为标签是数字,而不是你想要的字符串。

    最后,为了更改标签,我们可以简单地将 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)))

    这会给你 enter image description here

    关于r - 如何使用 ggvis 标记绘图刻度线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25235107/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com