我正在尝试开发一个 Shiny 的应用程序
,在其中我为用户提供上传数据文件(CSV 或 txt)的选项。然后我想根据这些数据渲染 ggplot 或plotly 。该数据集中有各种列。因此,我需要渲染各种图,并且由用户选择该数据集中的列作为 x 轴数据和 y 轴数据来渲染它们。我为用户提供了选择 x 轴和 y 轴数据列的选项。但是,当我提供用户选择的用于绘图的数据列时,输出不显示任何图形。
我的 plotly 代码:
df <- mtcars
ggplot(df, aes(x, y)) +
geom_point(aes(color='blue'))
我应该使用 aes
或 aes_string
来渲染上传数据中的列吗?
最佳答案
我有一段时间遇到了这个确切的问题,试图以 Shiny 的方式显示 plotly 。考虑一下您可能会让用户选择一个 selectInput
下拉列表来选择列,对吧?这将向您的 ggplot 函数发送一个字符串 (chr)。
通常,您使用 aes()
来选择美学,但这不适用于字符串。为此,您需要 aes_string()
。它的使用方式与aes()
完全相同,但所有调用都是字符串。 See documentation for information .
因此,如果您的 ggplot
调用是:
ggplot(myData, aes(x=something, y=somethingElse)) +
geom_point(aes(color=prettyColors))
数据集中的列 myData
为“something”、“somethingElse”和“prettyColors”,然后使用 aes_string()
,您可以使用以下方法创建相同的绘图:
ggplot(myData, aes_string(x="something", y="somethingElse")) +
geom_point(aes_string(color="prettyColors"))
关于r - 如何使用 'fileInput' 函数来提供上传的数据来绘制 ggplot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60814883/