2

我正在尝试在 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)。但描述栏上显示的累计值为 11,365。有没有办法解决这个问题,使标签不是累积值?

4

1 回答 1

3

我遇到了类似的问题,最终决定不使用 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 循环添加不同的跟踪。我想编写一个函数,该函数将具有任意列数的数据框作为输入并返回堆积面积图,但由于某种原因,该图不会显示所有轨迹(仅显示第一个和最后一个)

希望能帮助到你...

于 2016-02-14T06:07:47.500 回答