'Data must either be a data frame or a matrix , in ggplot2

I am running this code block, it is a simple ggplot2 lolipop graph but it is throwing me an error and I do not know how is this not a dataframe despite converting it into it

x=c('KNN','Log.reg','Rand.For','SVM','Naiv.Bay','DeepLearn.')
z=c(0.922,0.8154,0.772,0.8064,0.664,0.574)


# Create data
data <- data.frame(
  Model=x,
  AUC=z
)
data<-as.data.frame(data)
# plot
lol<-ggplot(data, aes(x=Model, y=AUC)) +
  geom_segment( aes(x=Model, xend=Model, y=0, yend=AUC)) +
  geom_point( size=5, color="red", fill=alpha("orange", 0.3), alpha=0.7, shape=21, stroke=2)
  theme_light() +
  theme(
    panel.grid.major.x = element_blank(),
    panel.border = element_blank(),
    axis.ticks.x = element_blank()
  ) +
  xlab("Models") +
  ylab("AUC")
lol+geom_text(aes(label=data$AUC),size=4)

Error in alpha("orange", 0.3) : Data must either be a data frame or a matrix



Solution 1:[1]

Okay , I think the answere is you need to unload the library 'psych' because it conflicts with ggplot2 somehow. Hope this helps.

Solution 2:[2]

You miss a + after geom_point....

x=c('KNN','Log.reg','Rand.For','SVM','Naiv.Bay','DeepLearn.')
z=c(0.922,0.8154,0.772,0.8064,0.664,0.574)


# Create data
data <- data.frame(
  Model=x,
  AUC=z
)
data<-as.data.frame(data)

class(data)
# plot
lol<-ggplot(data, aes(x=Model, y=AUC)) +
  geom_segment( aes(x=Model, xend=Model, y=0, yend=AUC)) +
  geom_point( size=5, color="red", fill=alpha("orange", 0.3), alpha=0.7, shape=21, stroke=2)+
theme_light() +
  theme(
    panel.grid.major.x = element_blank(),
    panel.border = element_blank(),
    axis.ticks.x = element_blank()
  ) +
  xlab("Models") +
  ylab("AUC")
lol+geom_text(aes(label=data$AUC),size=4)

enter image description here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Azhan Ahmed
Solution 2 TarJae