我想在 echarts4r 中重新创建一个具有两个子组 x 轴的数据透视图版本。我所说的数据透视图是指具有两个 x 轴标签子组的图表,如下所示。
到目前为止我找到了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 轴(即组信息)之外,该图表几乎已经存在。
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 代码)
最佳答案
您的图表的 JSON 版本可以轻松转换为 R。我没有添加您拥有的所有内容(工具提示等)。但是,一旦您了解了如何设置它,您就可以根据自己的喜好对其进行自定义。
首先,创建绘图,用 list()
替换任何 [] 或 {}。
与 echarts4r
相比,您将使用更多的 echarts 命名约定(即 xAxis
与 e_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)
关于r - echarts4r 创建数据透视图(子组 x 轴),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74740559/