R堆积面积图中的绘图标签
plotly labels in R stacked area chart
我正在尝试在 R 中制作一个堆积面积图,就像这个 ggplot2 一样(如下),仅使用 plotly。
要生成上述 ggplot2 图表的绘图版本,我首先必须在前一列 的值之上添加数据框中每一列的值 elw
.这是因为 plotly(据我所知)没有在面积图中自动堆叠值的能力。
使用这个新的堆叠数据集 elw_stack
,我使用以下代码制作我的图表:
el_plot2 = ggplot() +
geom_area(aes(elw_stack$year, elw_stack$x99999, fill = 'green')) +
geom_area(aes(elw_stack$year, elw_stack$x20000, fill = 'red')) +
geom_area(aes(elw_stack$year, elw_stack$x19000, fill = 'blue')) +
geom_area(aes(elw_stack$year, elw_stack$x12018, fill = 'purple')) +
geom_area(aes(elw_stack$year, elw_stack$x10006, fill = 'yellow'))
ggplotly(el_plot2)
该代码生成此图表:
问题是绘图标签引用了累积的 elw_stack
值。 1999 年的绿色值实际上是 ~3700(即 11,365 - 7957)。但是描述栏说的是累计值11365。有没有办法解决这个问题,使标签不是累积值?
我遇到了类似的问题,最终决定不使用 ggplotly,而是使用了 plot_ly 函数。这是我对您的数据使用的代码:
elw <- read.csv("elw.csv")
elw_stack <- read.csv("elw_stack.csv")
plot <- plot_ly(data=elw_stack, x=year, y=x10006, fill="tonexty", mode="lines",
text=round(elw$x10006, 0), hoverinfo='x+text+name', name="x10006")
plot <- add_trace(plot, data=elw_stack, x=year, y=x12018, fill="tonexty", mode="lines",
text=round(elw$x12018,0), hoverinfo='x+text+name', name="x12018")
plot <- add_trace(plot, data=elw_stack, x=year, y=x19000, fill="tonexty", mode="lines",
text=round(elw$x19000,0), hoverinfo='x+text+name', name="x19000")
plot <- add_trace(plot, data=elw_stack, x=year, y=x20000, fill="tonexty", mode="lines",
text=round(elw$x20000,0), hoverinfo='x+text+name', name="x20000")
plot <- add_trace(plot, data=elw_stack, x=year, y=x99999, fill="tonexty", mode="lines",
text=round(elw$x99999,0), hoverinfo='x+text+name', name="x99999")
plot <- layout(plot, yaxis=list(title="Whatever title you wanna use"))
最后的剧情是这样的:
我无法开始工作的是使用 for 循环添加不同的轨迹。我想编写一个函数,该函数将具有任意列数的数据框作为输入,并 returns 堆叠面积图,但由于某种原因,该图不会显示所有轨迹(仅显示第一个和最后一个)
希望对您有所帮助...
我正在尝试在 R 中制作一个堆积面积图,就像这个 ggplot2 一样(如下),仅使用 plotly。
要生成上述 ggplot2 图表的绘图版本,我首先必须在前一列 elw
.这是因为 plotly(据我所知)没有在面积图中自动堆叠值的能力。
使用这个新的堆叠数据集 elw_stack
,我使用以下代码制作我的图表:
el_plot2 = ggplot() +
geom_area(aes(elw_stack$year, elw_stack$x99999, fill = 'green')) +
geom_area(aes(elw_stack$year, elw_stack$x20000, fill = 'red')) +
geom_area(aes(elw_stack$year, elw_stack$x19000, fill = 'blue')) +
geom_area(aes(elw_stack$year, elw_stack$x12018, fill = 'purple')) +
geom_area(aes(elw_stack$year, elw_stack$x10006, fill = 'yellow'))
ggplotly(el_plot2)
该代码生成此图表:
问题是绘图标签引用了累积的 elw_stack
值。 1999 年的绿色值实际上是 ~3700(即 11,365 - 7957)。但是描述栏说的是累计值11365。有没有办法解决这个问题,使标签不是累积值?
我遇到了类似的问题,最终决定不使用 ggplotly,而是使用了 plot_ly 函数。这是我对您的数据使用的代码:
elw <- read.csv("elw.csv")
elw_stack <- read.csv("elw_stack.csv")
plot <- plot_ly(data=elw_stack, x=year, y=x10006, fill="tonexty", mode="lines",
text=round(elw$x10006, 0), hoverinfo='x+text+name', name="x10006")
plot <- add_trace(plot, data=elw_stack, x=year, y=x12018, fill="tonexty", mode="lines",
text=round(elw$x12018,0), hoverinfo='x+text+name', name="x12018")
plot <- add_trace(plot, data=elw_stack, x=year, y=x19000, fill="tonexty", mode="lines",
text=round(elw$x19000,0), hoverinfo='x+text+name', name="x19000")
plot <- add_trace(plot, data=elw_stack, x=year, y=x20000, fill="tonexty", mode="lines",
text=round(elw$x20000,0), hoverinfo='x+text+name', name="x20000")
plot <- add_trace(plot, data=elw_stack, x=year, y=x99999, fill="tonexty", mode="lines",
text=round(elw$x99999,0), hoverinfo='x+text+name', name="x99999")
plot <- layout(plot, yaxis=list(title="Whatever title you wanna use"))
最后的剧情是这样的:
我无法开始工作的是使用 for 循环添加不同的轨迹。我想编写一个函数,该函数将具有任意列数的数据框作为输入,并 returns 堆叠面积图,但由于某种原因,该图不会显示所有轨迹(仅显示第一个和最后一个)
希望对您有所帮助...