【发布时间】:2015-05-14 15:33:59
【问题描述】:
我一直在尝试编写一个 R 代码,它可以使用 ggplot 包从 excel 文件中读取数据并根据用户输入绘制不同的图表(如:条形图、折线图、点图或饼图)。
为此,我使用了 3-4 个不同的功能:
1) 条形图功能:
bar <- function() {
plot <- ggplot (data= df, aes(x= Dates, y= Values))
barPlot <- plot + geom_bar(stat="identity", fill="red", width=1)
print(barPlot)
}
2)同样,对于线图:
line <- function() {
plot <- ggplot (data= df, aes(x= Dates, y= Values))
linePlot <- plot + geom_line(aes(group=1), colour="blue", size=0.5)
print(linePlot)
}
3) main 函数,声明所有的库并将excel工作簿作为数据框读取。
在主函数中,我尝试使用“if else”调用不同的绘图函数,如下所示:
main <- function() {
library(XLConnect)
library(ggplot2)
wk <- loadWorkbook("D:\\....xlsx")
dataFrame = readWorksheet (wk, sheet="sheet1", header=TRUE)
df <- data.frame(Dates = dataFrame[,1],
Values =dataFrame[,2])
name <- scan(what = " ")
if (name == "bar")
{ bar() }
else if (name == "line")
{ line() }
}
但它会抛出错误:“ggplot2 不知道如何处理类函数的数据”。
数据的简化版本:
Dates Values
Jan 46
Feb 54
Mar 32
如何修改我的代码以适应能够根据用户输入绘制不同图形的要求?
【问题讨论】:
-
查看这些:stackoverflow.com/help/how-to-ask 和 stackoverflow.com/questions/5963269/…。另请注意,您的代码在一处使用
barPlot,在另一处使用barplot。 -
您是否在
bar()函数中定义了data?data恰好是一个基本的 R 函数。请创建一个完整的、最小的reproducible example 以充分说明您的观点。 -
我认为问题可能是您的代码中的拼写错误 - 您定义了变量
barPlot但尝试打印barplot(小写 p)。此外,正如@MrFlick 指出的那样,您不应该使用像data、plot和barplot这样的变量名,因为它们会与基本的r 函数冲突。进行这些更改,我认为这应该可以正常工作。 -
我无法重现您的错误。这向我表明问题可能出在您的数据上,而您仍未提供这些数据。请使用您的数据的简化版本进行编辑(例如,
dput(head(data))的输出仍然会导致问题。 -
请让你的例子 minimal 。从输入数据框开始,去掉
scan、Excel、未使用的包、特定于您的系统的文件和目录等。如果DF是您的输入数据框,那么您可以使用@987654341重复显示它@