繁体   English   中英

echarts4r创建的平行坐标图中,如何在竖线左侧显示标签?

[英]How to show labels on the left side of the vertical line in a parallel coordinates plot created with echarts4r?

上下文

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

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的文档,您将看到e_labels()文档

您可以将图形传递给e_labels() ,然后使用positionoffsetdistance arguments 将它们调整到您想要的位置。 position 参数的完整文档可在此处找到,其他 arguments 也可在此处找到。

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

我使用此函数来翻转axisTick.lengthaxisLabel.margin以及parallelAxisaxisLabel.align的默认值(仅限左侧)。

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()

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM