r - echarts4r 创建数据透视图(子组 x 轴)

标签 r echarts4r

我想在 echarts4r 中重新创建一个具有两个子组 x 轴的数据透视图版本。我所说的数据透视图是指具有两个 x 轴标签子组的图表,如下所示。

pivot chart with two x axis

到目前为止我找到了this所以答案可以回答 echart,但我无法将其翻译为 echarts4r,这可能吗?

数据

dd <- data.frame(
  market = rep(c("Left", "Right"), each = 6),
  gender = rep(rep(c("Female", "Male"), each = 3), 2),
  group = c("Top", "Middle", "Bottom"),
  value = c(10, 2, 4, 5, 1, 7, 7, 4, 1, 2, 5, 6)
)
library(echarts4r)
dd |> 
  group_by(gender) |> 
  e_charts(market) |> 
  e_bar(value)

这会生成下面的图表,除了缺少第二个 x 轴(即组信息)之外,该图表几乎已经存在。

chart with missing second axis

echarts解决方案

这不是我的问题的直接解决方案,但在使用 echarts 时,我发现这个调整有效,但不能转化为 echarts4r。

option = {
  tooltip: {
    trigger: 'axis',
    axisPointer: {
      type: 'cross',
      crossStyle: {
        color: '#999'
      }
    }
  },
  toolbox: {
    feature: {
      magicType: { show: true, type: ['line', 'bar'] },
      restore: { show: true },
      saveAsImage: { show: true }
    }
  },
  legend: {
    data: ['Female', 'Male']
  },
  xAxis: [
    {
      type: 'category',
      data: ["Bottom", "Middle", "Top", "Bottom", "Middle", "Top"],
      axisPointer: {
        type: 'shadow'
      }
    },
    {
      type: "category",
      axisTick: { show: true,
      alignWithLabel: false,
        length: 40,
        align: "left",
        interval: function(index, value) {
          return value ? true : false;
        }},
      offset: -700,
      axisLine: {
        show: false
      },
      data: ["Left", "Right"]
    }
  ],
  yAxis: [
    {
      type: 'value',
      name: 'Value',
      min: 0,
      max: 12,
      interval: 2,
      axisLabel: {
        formatter: function(value) {
          return value;
        }
      }
    }
  ],
  series: [
    {
      name: 'Male',
      type: 'bar',
      tooltip: {
        valueFormatter: function (value) {
          return value;
        }
      },
      data: [
        7, 1, 5, 6, 5, 2
      ]
    },
    {
      name: 'Female',
      type: 'bar',
      tooltip: {
        valueFormatter: function (value) {
          return value;
        }
      },
      data: [
        4, 2, 10, 1, 4, 7
      ]
    }
  ]
};

(另请参阅 this 代码)

echarts solution

最佳答案

您的图表的 JSON 版本可以轻松转换为 R。我没有添加您拥有的所有内容(工具提示等)。但是,一旦您了解了如何设置它,您就可以根据自己的喜好对其进行自定义。

首先,创建绘图,用 list() 替换任何 [] 或 {}。

echarts4r 相比,您将使用更多的 echarts 命名约定(即 xAxise_x_axis)。

ops <- list(
  xAxis = list(
    list(type = "category", position = "bottom", axisLine = list(show = F),
         data = as.list(rep(c("Top", "Middle", "Bottom"), 2))),
    list(type = "category", position = "bottom",
         axisTick = list(
           show = T, alignWithLabel = F, length = 40, align = "left",
           interval = 2),           # interval based on 0 start
         axisLine = list(show = F), axisLabel = list(margin = 30),
         splitLine = list(
           show = T, interval = 2), # interval based on 0 start
         data = list("", "Left", "", "", "Right", ""))),
  yAxis = list(type = "value", name = "Value", min = 0, max = 12, interval = 2),
  series = list(
    list(name = "Male", type = "bar",
         data = dd[dd$gender %in% "Male", ]$value),
    list(name = "Female", type = "bar",
         data = dd[dd$gender %in% "Female", ]$value)
  ),
  legend = list(data = list("Female", "Male"))
)

现在,创建你的情节:

e_charts() |> e_list(ops)

enter image description here

关于r - echarts4r 创建数据透视图(子组 x 轴),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74740559/

相关文章:

mysql - 循环数据库连接

R echarts4r - 在轴中格式化日期

r - 在工具提示中显示多个额外变量

r - 对多个变量执行卡方检验并提取 R 中的相关 p 值

c - R的R_pow()和libc的pow()有什么区别?

regex - 如何将列添加到基于另一列中的字符串的 R 中的 data.table?

python - 基于两列作为索引创建新变量,一列作为新变量名称 python pandas 或 R

r - 如何使 echarts4r 上的标题居中?

r - 如何在 echarts4r 图上显示标签,但每隔 2 或 3 个条显示一次?