【问题标题】:How to Plot a R Plotly Graph when having only one observation只有一个观察值时如何绘制 R Plotly 图
【发布时间】:2021-04-06 19:20:51
【问题描述】:

我有一个我创建的应用程序,其中我有一些情节条形图,这些条形图会随着不同的过滤器而变化。当我有 2+ 条要显示时,它们工作得很好(我已经做到了,如果观察值为零,则不会显示图表)。但是,当条形图中只有一个条要绘制时,plotly 函数基本上会出错:Error in plot_ly(df, labels = ~(df[a]), : argument is missing, with no default。有没有办法解决这个错误?

编辑: 正如@PavoDive 建议我应该为我的问题提供一个可重现的示例(感谢您的建议!),我尝试创建一个仍然证明问题的情节代码的简单示例。

我的代码的简单版本:

df <- data.frame(
  ID = 1234:1235,
  ID_Name = c('ID_Name_1', 'ID_Name_2'), 
  Site = c('Site_1', 'Site_2'), 
  Time = c('Jan 2021', 'Jan 2021'), 
  Value = c(1000,2000), 
  Fraction = c(0.25, 0.75), 
  Percentage = c(25, 75)    
)

site_var = 'Site'
value_var = 'Value'

fig <- plot_ly(
               df, 
               x = df[[site_var]], 
               y = df[[value_var]], 
               type = 'bar', 
               insidetextfont = list(color = '#FFFFFF'), 
               hoverinfo = 'hovertext', 
               hovertemplate = paste('<i>Site Type</i>: %{x}','\n<i>Value</i>: ', format(df[[value_var]], scientific = TRUE, digits = 3) ,'\nRelative Contribution: ',df$Percentage,'%', sep = ''),
               color = ~(df[[site_var]]),
               marker = list(colors = colors,line = list(color = '#FFFFFF', width = 1)),
               showlegend = FALSE
) %>%
layout(
       title = list(text = "Sample Bar Graph"),
       margin = list(b = 210),
       xaxis = list( title = "Independent",showgrid = FALSE, zeroline = TRUE, showticklabels = TRUE),
       yaxis = list(title = "Dependent", showgrid = FALSE, zeroline = TRUE, showticklabels = TRUE, hoverformat = '.2f')
  )

但是,这不适用于这样的数据框:

df <- data.frame(
                 ID = 1234,
                 ID_Name = c('ID_Name_1'), 
                 Site = c('Site_1'), 
                 Time = c('Jan 2021'), 
                 Value = c(1000), 
                 Fraction = c(1), 
                 Percentage = c(100)    
                )

【问题讨论】:

  • 欢迎来到 SO。为了“帮助我们帮助您”,请提供一个可重现的示例:dput(head(df)) 的结果可以工作,以及您用于生成绘图的代码。

标签: r r-plotly


【解决方案1】:

在根据@PavoDive 的建议创建更简单的代码版本时,我偶然发现了答案(这是我试图找到的东西太久了,但迟到总比没有好!)。

原来marker = list(colors = colors,line = list(color = '#FFFFFF', width = 1)), 是罪魁祸首。我很久以前就在我的函数中包含了这一行,可能是由于查看旧文档,因为我在 plot_ly() 文档中找不到这个关键字了。删除这一行使函数工作!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    相关资源
    最近更新 更多