繁体   English   中英

R堆积面积图中的图形标签

[英]plotly labels in R stacked area chart

我试图在R中制作一个堆积区域图表,就像这个ggplot2一样(下面)只使用plotly。 在此输入图像描述

这是我的数据的链接

要生成上述ggplot2图表的图形版本,我首先必须在我的数据框中添加每列的值, elw ,在上一列的值之上, 如此 这是因为情节(据我所知)没有能力自动堆积面积图中的值。

使用这个新的堆叠数据集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。 有没有办法解决这个问题,以便标签不是累积值?

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

希望能帮助到你...

暂无
暂无

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

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