【问题标题】:How to visualize this data clarifying in R and recognize patterns?如何在 R 中可视化这些数据澄清并识别模式?
【发布时间】:2020-12-16 15:09:34
【问题描述】:

这是我的数据框:

dataframe

输出 dput(数据帧):

structure(list(ChargePoint_skey = c(2174, 2174, 2174, 2239, 2239, 
2266, 2266, 2266, 2266, 2266), MonthYear = structure(c(17532, 
17563, 17591, 17956, 17987, 17532, 17563, 17591, 17622, 17652
), class = "Date"), aantalsessies = c(16L, 15L, 14L, 8L, 8L, 
61L, 29L, 33L, 13L, 14L)), .Names = c("ChargePoint_skey", "MonthYear", 
"aantalsessies"), class = c("grouped_df", "tbl_df", "tbl", "data.frame"
), row.names = c(NA, -10L), groups = structure(list(ChargePoint_skey = 
c(2174, 
2239, 2266), .rows = list(1:3, 4:5, 6:10)), .Names = c("ChargePoint_skey", 
".rows"), row.names = c(NA, -3L), class = c("tbl_df", "tbl", 
"data.frame"), .drop = TRUE))

正如您所见,“ChargePoint_skey”列中有很多组,因为有很多不同的 ChargePoint。我想可视化这些数据以识别所有 ChargePoints 的模式。有人对某种可视化有建议吗?我在想像这样的堆积条形图:

stackedbarchart

但这不是我的选择,因为我的数据中有许多不同的 ChargePoint。

我希望有人可以帮助我!

【问题讨论】:

  • 请使用dput(yourdata)添加您的数据框,不要包含屏幕截图!
  • 请编辑问题并粘贴dput()的输出。
  • 我刚刚编辑了问题。
  • 您是否尝试过 3D 绘图 - 使用 plotly 或类似方法使其具有交互性?从外观上看,您的数据由多年的离散系列 (ChargePoint) (MonthYear) 和一些数值 (aantalsessies) 组成。
  • @Gautam 这听起来是我的问题的一个很好的答案。不幸的是,我对情节或交互式情节没有任何经验。你能用这种方法进一步帮助我吗?

标签: r ggplot2 data-visualization


【解决方案1】:

很难作为评论发布,所以我发布了答案。

3D 图(表面/散点图等)对于可视化数据非常有用。这是我以前的一个项目中的一个曲面图示例,我用它来检查三个变量之间的关系以及问题变得不可行的地方(图中的空白)。这是一个全因子 DOE 的示例。

现在回到你的问题 - 我更喜欢使用 plotly 来获得你可以玩弄的交互式输出。这(imo)比只能通过代码(旋转/平移/缩放等)操作的静态工具要好。

代码

library(plotly) 
# dat is the data.frame from your dput output 

plt <- plot_ly(dat, x = ~MonthYear, y = ~ChargePoint_skey, y = ~aantalsessies) %>% 
  add_markers()

输出

由于这是数据集的一个小样本,所以情节相当稀疏。使用更大的数据集,您可能会获得更好的见解。

您可以参考https://plotly.com/r/3d-scatter-plots/了解更多信息。绘图本身可以保存为 html 文件(可以在浏览器中打开)用于共享 - 使用 htmlwdigets 包。

htmlwidgets::saveWidget(widget = as_widget(plt), file = 'myfile.html', selfcontained = T, title = 'my tab title')

希望对您有所帮助!

【讨论】:

  • 问题是我有很多 ChargePoint_skeys (+- 363),我认为它仍然会是一个不清楚的可视化比。但是我尝试运行以下代码:` plt % add_markers()` 不幸的是, plt 在我的全局中变成了 8 个列表环境..我看不到情节。你知道我怎样才能使情节可见吗?对不起,我的反应迟了。
  • 情节本身就是一个列表。您可以通过在控制台中调用它来查看它 - 如果使用 base R,那么它应该出现在浏览器中,如果您使用的是 Rstudio 之类的 IDE,那么该图将显示在“查看器”窗口中。在我的回答中,我还描述了一种将绘图保存为独立 html 文件的方法 - 该文件保存到您的工作目录,然后可以在浏览器中打开。
【解决方案2】:

使用geom_tile() 尝试这样的事情:

library(ggplot2)
#Code
df %>%
  ggplot(aes(x=factor(ChargePoint_skey),y=factor(MonthYear),
             fill=aantalsessies))+
  geom_tile()+xlab('ChargePoint_skey')+ylab('MonthYear')

输出:

【讨论】:

  • 由于存在很多 ChargePoint_skey 的数据,这里不再澄清。 x 轴的范围会太大。
  • 您还有其他建议吗? :)
  • 可能使用构面
猜你喜欢
  • 1970-01-01
  • 2018-01-29
  • 2022-10-14
  • 2020-10-16
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多