R ggplot2不知道如何处理class uneval的数据

时间:2016-11-09 09:58:24

标签: r ggplot2 powerbi

我知道在这个主题上已经有很多帖子,其中大部分都归因于ggplot2中未映射的变量或数据。但是在我的情况下,我确实拥有它,并且在我的ggplot2中进一步使用它。

我的来源是Power BI的数据集

Throughput  Label  ThroughputAgegroup       
621 Assess reimbursement 1-3 Maanden
1201 Assess reimbursement 3-6 Maanden
105 Authorized 3-6 Maanden
150 Cancelled 1-3 Maanden
771 Cancelled 3-6 Maanden
4215 Closed 0-14 Dagen
57098 Closed 1-3 Maanden
14180 Closed 15-30 Dagen
26631 Closed 3-6 Maanden
14813 Closed 6-12 Maanden
52347 Closed Groter dan 12 maanden
1600 Dispatched 1-3 Maanden
58 Dispatched 15-30 Dagen
394 Dispatched 3-6 Maanden
110 Intake 1-3 Maanden
818 Ready for closure 1-3 Maanden
112 Ready for closure 3-6 Maanden

我的R情节:

ggplot(dataset, aes(x=`ThroughputAgegroup`, y=`Label`))+ 
geom_point(size=10, alpha=0.5,aes(colour=`Label`), na.rm = TRUE) +
geom_text(aes(label=`Throughput`), size=3) + 
scale_colour_brewer(palette="Set1")

我想让大小取决于Throughput

当我尝试运行时:

ggplot(dataset, aes(x=`ThroughputAgegroup`, y=`Label`))+ 
geom_point(aes(size=`Throughput`), alpha=0.5,aes(colour=`Label`)) +
geom_text(aes(label=`Throughput`), size=3) + 
scale_colour_brewer(palette="Set1")

我收到提示: 错误: ggplot2不知道如何处理class uneval的数据

但我只是不明白为什么它不能上课?

1 个答案:

答案 0 :(得分:0)

评论已经指出,存在问题:

geom_point(aes(size=`Throughput`), alpha=0.5,aes(colour=`Label`))

这是您需要替换以使其尺寸取决于吞吐量的情况:

size1 <- dataset$Throughput
geom_point(size=size1, alpha=0.5,aes(colour=`Label`), na.rm = TRUE)

但是您的挑战不止于此。让我告诉你我的意思。


很高兴您提供了一个数据样本。但是,样例数据比较混乱而且不是很容易拾取,并不是很好,因为分隔符似乎是space,并且变量中有几个空格。如果您改用这个:

Throughput,Label,ThroughputAgegroup
621,Assess reimbursement,1-3 Maanden
1201,Assess reimbursement,3-6 Maanden
105,Authorized,3-6 Maanden
150,Cancelled,1-3 Maanden
771,Cancelled,3-6 Maanden
4215,Closed,0-14 Dagen
57098,Closed,1-3 Maanden
14180,Closed,15-30 Dagen
26631,Closed,3-6 Maanden
14813,Closed,6-12 Maanden
52347,Closed,Groter dan 12 maanden
1600,Dispatched,1-3 Maanden
58,Dispatched,15-30 Dagen
394,Dispatched,3-6 Maanden
110,Intake,1-3 Maanden
818,Ready for closure,1-3 Maanden
112,Ready for closure,3-6 Maanden

您可以使用dataset <- read.delim("clipboard", sep = ",")

轻松地将其复制并导入到R中

现在,图表:

图1 -您的原始图表:

enter image description here

图3 -您的带有geom_point(size=size1, alpha=0.5,aes(colour=标签), na.rm = TRUE)的图

enter image description here

我敢打赌这不是您想要的。这里发生的是,您有一些较低的值,而另一些具有相当高的值,因此图表由后者主导。但是请不要失望,您可以改用该系列的日志:

# my suggestion
size2 <- log(dataset$Throughput)
ggplot(dataset, aes(x=`ThroughputAgegroup`, y=`Label`))+ 
  geom_point(size=size2, alpha=0.5,aes(colour=`Label`), na.rm = TRUE) +
  geom_text(aes(label=`Throughput`), size=3) + 
  scale_colour_brewer(palette="Set1")

图解-气泡大小= log(dataset$Throughput)

enter image description here

我认为看起来还可以!但是您也可以使用log(dataset$Throughput)^1.6进行进一步调整,并调整最后一部分^1.6,如下所示:

enter image description here

如果您还不太满意,请查看ggplot2.tidyverse.org上的一流文档,然后从那里获取。

此处提供了完整的代码,可方便地进行复制和粘贴:

library(ggplot2)

# rm(list=ls())
# dataset <- read.delim("clipboard", sep = ",")

# original
ggplot(dataset, aes(x=`ThroughputAgegroup`, y=`Label`))+ 
  geom_point(size=10, alpha=0.5,aes(colour=`Label`), na.rm = TRUE) +
  geom_text(aes(label=`Throughput`), size=3) + 
  scale_colour_brewer(palette="Set1")

# my suggestion
size2 <- log(dataset$Throughput)
size3 <- log(dataset$Throughput)^1.6
ggplot(dataset, aes(x=`ThroughputAgegroup`, y=`Label`))+ 
  geom_point(size=size3, alpha=0.5,aes(colour=`Label`), na.rm = TRUE) +
  geom_text(aes(label=`Throughput`), size=3) + 
  scale_colour_brewer(palette="Set1")