【发布时间】: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))的结果可以工作,以及您用于生成绘图的代码。