【问题标题】:How to show labels on the left side of the vertical line in a parallel coordinates plot created with echarts4r?echarts4r创建的平行坐标图中,如何在竖线左侧显示标签?
【发布时间】:2022-12-18 15:53:23
【问题描述】:

上下文

我知道以下代码会产生以下情节

library('echarts4r')

dat  <- structure(list(
  labels = c("string4",
             "string3",
             "string2",
             "string1"),
  quantity = c(19L,
               10L,
               15L,
               20L)),
  row.names = 4:1,
  class = "data.frame")

dat <- dat[order(dat$labels, decreasing = TRUE),]

dat |>
  e_charts(y  = labels, reorder = FALSE) |>
  e_parallel(labels, quantity, opts = list(smooth = TRUE))

问题

我希望这些标签(蓝色箭头所指的标签)显示在垂直线的左侧而不是右侧。我怎样才能将它们移到左侧?

我试过的

正如@socialscientist 在其回答中所建议的那样,我已经查看了文档,并且我尝试了以下方法但无济于事。

以下不会引发错误,但不会移动标签。

df <- data.frame(
  labels = c("string4", "string3", "string2", "string1"),
  column2 = c(19L, 10L, 15L, 20L))
df |>
  e_charts(y = labels) |>
  e_labels(position = 'left') |>
  e_parallel(labels, column2)

以下引发错误。

df <- data.frame(
  labels = c("string4", "string3", "string2", "string1"),
  column2 = c(19L, 10L, 15L, 20L))
df |>
  e_charts(y = labels) |>
  e_parallel(labels, column2) |>
  e_labels(position = 'left')

以下不会引发错误,但不会移动标签。

df <- data.frame(
  labels = c("string4", "string3", "string2", "string1"),
  column2 = c(19L, 10L, 15L, 20L))
df |>
  e_charts(y = labels) |>
  e_labels(offset = c(123, 123)) |>
  e_parallel(labels, column2)

以下不会引发错误,但不会移动标签。

df <- data.frame(
  labels = c("string4", "string3", "string2", "string1"),
  column2 = c(19L, 10L, 15L, 20L))
df |>
  e_charts(y = labels) |>
  e_labels(position = 'insideRight', distance = 123) |>
  e_parallel(labels, column2)

【问题讨论】:

  • 目前看起来这在echarts4r 中没有实现。我的建议是您要么 (a) 将图表传递给 echarts4rOutput() 并尝试手动弄清楚如何更改 parallelAxis 的工作方式,因为您看到的 Y 轴不是实际图表的 Y 轴,(b) 交换到MASSggplot2 来创建你的平行坐标图r-graph-gallery.com/93-parrallel-plot(它可以与 shiny 或其他东西交互),或者 (c) 用 D3.js bl.ocks.org/jasondavies/1341281 编写你自己的解决方案。

标签: r parallel-coordinates echarts4r


【解决方案1】:

我找不到一种有效的方法来将必要的输入输入e_parallel。但是,您可以事后更改它。

我使用此函数将axisTick.lengthaxisLabel.marginaxisLabel.align的默认值翻转为parallelAxis(仅限左侧)。

fixLabs <- function(plt) {
  plt$x$opts$parallelAxis[[1]]$axisTick <- list(length = -5) # default is +5
  plt$x$opts$parallelAxis[[1]]$axisLabel <- list(margin = -8, # default is +8
                                                 align = "right")
  plt
}

这就是您使用它的方式。

dat |>
  e_charts(y  = labels, reorder = FALSE) |>
  e_parallel(labels, quantity, 
             opts = list(smooth = TRUE))  %>% 
  fixLabs()

【讨论】:

    猜你喜欢
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多