如何在只有一个观测值的情况下绘制R Plotly图



我创建了一个应用程序,其中有一些随过滤器变化的条形图。当我有2个以上的条形图要显示时,它们工作得很好(我已经这样做了,如果没有观测结果,那么就不会显示图表(。然而,当条形图中只有一个要绘制的条形图时,则绘图函数本质上错误为: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)    
)

在根据@PavoDive的建议创建更简单版本的代码时,我偶然发现了答案(这是我很久以来一直试图找到的东西,但迟做总比不做好!(。

事实证明,线路marker = list(colors = colors,line = list(color = '#FFFFFF', width = 1)),是罪魁祸首。很久以前,我在函数中包含了这一行,可能是因为查看了旧文档,因为我在plot_ly((文档中再也找不到这个关键字了。拆下这条线,功能就可以工作了!

相关内容

最新更新