• Register
1 vote
88 views

Problem :

I have recently started using R I am very new to R while working on R I am facing the below error whenever I try to create the graph on the ggplot:

“Error: ggplot2 doesn't know how to deal with data of class gg/ggplot”
I often face the error message if I try to create below graphs.
MyCars %>%
ggplot() %>%
geom_bar(mapping = aes(x = Destination))

MyCars %>%
ggplot() %>%
geom_bar(mapping = aes(x = Cost))

MyCars %>%
ggplot() %>%
geom_point(mapping = aes(x = Destination, y = Cost))
I need help in fixing above error.
8 5 2
3,230 points

Please log in or register to answer this question.

2 Answers

1 vote

Solution :

I can help you in fixing your errors. As you are very new to R there are possibilities of mistakes from your end. From my point of view your main mistake is the use of pipe (%>%) instead of using the + . Also I want to suggest you to put your aes() (x\y axis) under your ggplot() and it should not be under your other arguments.

Please refer below example for more clarity:

require(tidyverse)

df <- MyCars

df %>% 
  ggplot(aes(x = factor(vs))) +
  geom_bar()

df %>%
  ggplot(aes(x = mpg, y = disp)) +
  geom_point()
I hope my above solution will help you in fixing the errors.
8 4
5,680 points
0 votes

Solution:

The error occurs since of you are attempting to map a numeric vector to data in geom_errorbarGVW[1:64,3]ggplot just performs with data.frame.

Usually, you shouldn't subset within ggplot calls. You are doing so since your standard errors are contained in four separate objects. include them to your original data.frame and you will be able to plot everything in one call.

Here with a dplyr solution to shorten the data and compute the standard error beforehand.

library(dplyr)
d <- GVW %>% group_by(Genotype,variable) %>%
    summarise(mean = mean(value),se = sd(value) / sqrt(n()))

ggplot(d, aes(x = variable, y = mean, fill = Genotype)) + 
  geom_bar(position = position_dodge(), stat = "identity", 
      colour="black", size=.3) +
  geom_errorbar(aes(ymin = mean - se, ymax = mean + se), 
      size=.3, width=.2, position=position_dodge(.9)) +
  xlab("Time") +
  ylab("Weight [g]") +
  scale_fill_hue(name = "Genotype", breaks = c("KO", "WT"), 
      labels = c("Knock-out", "Wild type")) +
  ggtitle("Effect of genotype on weight-gain") +
  scale_y_continuous(breaks = 0:20*4) +
  theme_bw()

 

10 6 4
31,120 points

Related questions

0 votes
1 answer 32 views
1 vote
1 answer 66 views
66 views
Problem: I am a naive to R. I am trying to create the bar graph using the ggplot2 to compare a type of 2016 primary election and the Bernie Sanders's respective percentage of the votes in that election. I have below code: y = $ Type : Factor w/ 2 levels ... data of class uneval. I have already tried to search the solution on above error around but because of some unknown reasons to me I am stuck.
asked May 27, 2020 Martin K 6.6k points
1 vote
1 answer 55 views
55 views
Problem : I am trying to understand R and I am very new to Programming as wel. If I try to create the box chart with the use of standard error bars I often face below error message: “Error: ggplot2 doesn't know how to deal with data of class numeric”. Looking for help in quick fixing the above error.
asked May 5, 2020 stewart 4k points
0 votes
1 answer 1.3K views
1.3K views
Problem : I need answer to bellow issue don't know how to automatically pick scale for object of type data.frame. defaulting to continuous.
asked Nov 7, 2019 peterlaw 6.9k points
0 votes
1 answer 13 views
13 views
Problem: ggplot error: discrete value supplied to continuous scale.
asked 6 days ago Dan phillip 1.9k points
1 vote
1 answer 2.6K views
2.6K views
Problem : I am facing error related to ggproto as following error: cannot add ggproto objects together. did you forget to add this object to a ggplot object?
asked Nov 11, 2019 peterlaw 6.9k points
1 vote
1 answer 957 views
957 views
Problem: I have limited knowledge of R and ggplot. I have recently written a function and trying to run the function as shown below: ggplot(datfr, aes(x = dat1[1:951,], y = dat2[1:951,])) + geom_point() After executing above function I am facing below error: Don't ... and when I try to use nrow on my two datasets it again returns the same number of rows. How can I fix above ggplot related error.
asked May 26, 2020 Martin K 6.6k points
0 votes
1 answer 1.7K views
1.7K views
Problem : I think my dataframe is correct and my code is also okay. But I am facing following error: Error in .Call.graphics(C_palette2, .Call(C_palette2, NULL)) : invalid graphics state What is wrong with my below data? date trt var val 1/12/2019 cc sw5 0.2684138 1/12/2019 ... ] Also I want to make the scatterplot as follows: ggplot(data = df,aes(x = date,y = val)) + geom_point(aes(group = trt))
asked Dec 6, 2019 alecxe 7.5k points
0 votes
1 answer 145 views
0 votes
1 answer 120 views