我正在尝试开发一个shiny app
,其中我为用户提供上传数据文件(CSV 或 txt)的选项。然后我想从这些数据中呈现ggplot
或plotly
。该数据集中有各种列。因此,我需要渲染各种绘图,并且它们将由用户在该数据集中选择列作为 x 轴数据和 y 轴数据来呈现。我为用户提供了选择 x 轴和 y 轴数据列的选项。但是,当我输入用户选择用于绘图的数据列时,输出不显示任何图形。
我的绘图的代码:
df <- mtcars
ggplot(df, aes(x, y)) +
geom_point(aes(color='blue'))
我应该使用aes
还是aes_string
来呈现上传数据的列?
我有一段时间试图在闪亮中展示情节时遇到了这个确切的问题。 考虑到您可能让用户选择一个selectInput
下拉列表进行列选择,对吗? 这将向ggplot
函数发送一个字符串 (chr)。
通常,您使用aes()
来选择美学,但这不适用于字符串。 为此,您需要aes_string()
. 它的使用方式与aes()
完全相同,但所有调用都是字符串。 有关信息,请参阅文档。
因此,如果您的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"))