ggplot2 scale_fill_gradient() function not changing point colors R












3















I'm using ggplot2 in R to create maps. In the past, I have been able to successfully use the scale_fill_gradient() function to control geom_point fills. However, when I run the code below (with example table provided), I simply get a map of all black points. The legend appears correct, but the points never change color. I think my desired variable is not mapping to the fill aesthetic, but I cannot figure out why. Thank you in advance!



(if it matters, I am using tibble package to define tables)



table = tibble(long = c(15.28, 15.29, 15.3, 15.31, 15.32), lat = c(-4.4, -4.39, -4.38, -4.37, -4.36), consumption = c(NA, 3, 54, 6, 8))

mapping = aes_string(x = 'long', y = 'lat', fill = 'consumption')

# define breaks, limits, colors

low = 'seashell'
high = 'tan3'
breaks = c(0, max(na.omit(table)[['consumption']]))
limits = breaks

# plot

p <- ggplot() +
# points
geom_point(mapping = mapping, data = table, alpha = 0.7, size = 4) +
# point colors
scale_fill_gradient(low = low, high = high, na.value = 'darkgrey', guide = 'colorbar', aesthetics = 'fill'
, breaks = breaks, limits = limits) +
# title
ggtitle('consumption') +
# title formatting
theme(plot.title = element_text(color = "red", size = 10, face = "bold", hjust=0),
legend.position="bottom",
legend.text=element_text(size=9),
legend.title=element_text(size=9)) +
# legend
guides(fill=guide_colorbar(title='consumption')) +
# get rid of axes, etc.
theme(axis.line = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank()) +
xlab('') +
ylab('') +
# make legend correct
theme(legend.box = 'vertical') +
# add max/min corresponding to map
xlim(c(15.28, 15.38)) +
ylim(c(-4.41, -4.30))









share|improve this question

























  • points are generally coloured with aes(..., color = ...) not fill

    – Jack Brookes
    Nov 25 '18 at 1:07











  • @JackBrookes thanks for your response! In my experience, though, the "color" aesthetic refers to the outline of a point, while the "fill" aesthetic refers to the shade inside. I have been able to use "fill" when changing point colors quite often in the past so I don't think that's the problem. ETA: I stand thoroughly corrected! thank you :)

    – Dan C
    Nov 25 '18 at 1:10













  • That's correct, but the default point used in geom_point has no outline and its color is controlled by color and not fill. This can be changed depending on which shape you use

    – Jack Brookes
    Nov 25 '18 at 17:50













  • @JackBrookes good to know! thank you.

    – Dan C
    Nov 26 '18 at 22:49
















3















I'm using ggplot2 in R to create maps. In the past, I have been able to successfully use the scale_fill_gradient() function to control geom_point fills. However, when I run the code below (with example table provided), I simply get a map of all black points. The legend appears correct, but the points never change color. I think my desired variable is not mapping to the fill aesthetic, but I cannot figure out why. Thank you in advance!



(if it matters, I am using tibble package to define tables)



table = tibble(long = c(15.28, 15.29, 15.3, 15.31, 15.32), lat = c(-4.4, -4.39, -4.38, -4.37, -4.36), consumption = c(NA, 3, 54, 6, 8))

mapping = aes_string(x = 'long', y = 'lat', fill = 'consumption')

# define breaks, limits, colors

low = 'seashell'
high = 'tan3'
breaks = c(0, max(na.omit(table)[['consumption']]))
limits = breaks

# plot

p <- ggplot() +
# points
geom_point(mapping = mapping, data = table, alpha = 0.7, size = 4) +
# point colors
scale_fill_gradient(low = low, high = high, na.value = 'darkgrey', guide = 'colorbar', aesthetics = 'fill'
, breaks = breaks, limits = limits) +
# title
ggtitle('consumption') +
# title formatting
theme(plot.title = element_text(color = "red", size = 10, face = "bold", hjust=0),
legend.position="bottom",
legend.text=element_text(size=9),
legend.title=element_text(size=9)) +
# legend
guides(fill=guide_colorbar(title='consumption')) +
# get rid of axes, etc.
theme(axis.line = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank()) +
xlab('') +
ylab('') +
# make legend correct
theme(legend.box = 'vertical') +
# add max/min corresponding to map
xlim(c(15.28, 15.38)) +
ylim(c(-4.41, -4.30))









share|improve this question

























  • points are generally coloured with aes(..., color = ...) not fill

    – Jack Brookes
    Nov 25 '18 at 1:07











  • @JackBrookes thanks for your response! In my experience, though, the "color" aesthetic refers to the outline of a point, while the "fill" aesthetic refers to the shade inside. I have been able to use "fill" when changing point colors quite often in the past so I don't think that's the problem. ETA: I stand thoroughly corrected! thank you :)

    – Dan C
    Nov 25 '18 at 1:10













  • That's correct, but the default point used in geom_point has no outline and its color is controlled by color and not fill. This can be changed depending on which shape you use

    – Jack Brookes
    Nov 25 '18 at 17:50













  • @JackBrookes good to know! thank you.

    – Dan C
    Nov 26 '18 at 22:49














3












3








3








I'm using ggplot2 in R to create maps. In the past, I have been able to successfully use the scale_fill_gradient() function to control geom_point fills. However, when I run the code below (with example table provided), I simply get a map of all black points. The legend appears correct, but the points never change color. I think my desired variable is not mapping to the fill aesthetic, but I cannot figure out why. Thank you in advance!



(if it matters, I am using tibble package to define tables)



table = tibble(long = c(15.28, 15.29, 15.3, 15.31, 15.32), lat = c(-4.4, -4.39, -4.38, -4.37, -4.36), consumption = c(NA, 3, 54, 6, 8))

mapping = aes_string(x = 'long', y = 'lat', fill = 'consumption')

# define breaks, limits, colors

low = 'seashell'
high = 'tan3'
breaks = c(0, max(na.omit(table)[['consumption']]))
limits = breaks

# plot

p <- ggplot() +
# points
geom_point(mapping = mapping, data = table, alpha = 0.7, size = 4) +
# point colors
scale_fill_gradient(low = low, high = high, na.value = 'darkgrey', guide = 'colorbar', aesthetics = 'fill'
, breaks = breaks, limits = limits) +
# title
ggtitle('consumption') +
# title formatting
theme(plot.title = element_text(color = "red", size = 10, face = "bold", hjust=0),
legend.position="bottom",
legend.text=element_text(size=9),
legend.title=element_text(size=9)) +
# legend
guides(fill=guide_colorbar(title='consumption')) +
# get rid of axes, etc.
theme(axis.line = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank()) +
xlab('') +
ylab('') +
# make legend correct
theme(legend.box = 'vertical') +
# add max/min corresponding to map
xlim(c(15.28, 15.38)) +
ylim(c(-4.41, -4.30))









share|improve this question
















I'm using ggplot2 in R to create maps. In the past, I have been able to successfully use the scale_fill_gradient() function to control geom_point fills. However, when I run the code below (with example table provided), I simply get a map of all black points. The legend appears correct, but the points never change color. I think my desired variable is not mapping to the fill aesthetic, but I cannot figure out why. Thank you in advance!



(if it matters, I am using tibble package to define tables)



table = tibble(long = c(15.28, 15.29, 15.3, 15.31, 15.32), lat = c(-4.4, -4.39, -4.38, -4.37, -4.36), consumption = c(NA, 3, 54, 6, 8))

mapping = aes_string(x = 'long', y = 'lat', fill = 'consumption')

# define breaks, limits, colors

low = 'seashell'
high = 'tan3'
breaks = c(0, max(na.omit(table)[['consumption']]))
limits = breaks

# plot

p <- ggplot() +
# points
geom_point(mapping = mapping, data = table, alpha = 0.7, size = 4) +
# point colors
scale_fill_gradient(low = low, high = high, na.value = 'darkgrey', guide = 'colorbar', aesthetics = 'fill'
, breaks = breaks, limits = limits) +
# title
ggtitle('consumption') +
# title formatting
theme(plot.title = element_text(color = "red", size = 10, face = "bold", hjust=0),
legend.position="bottom",
legend.text=element_text(size=9),
legend.title=element_text(size=9)) +
# legend
guides(fill=guide_colorbar(title='consumption')) +
# get rid of axes, etc.
theme(axis.line = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank()) +
xlab('') +
ylab('') +
# make legend correct
theme(legend.box = 'vertical') +
# add max/min corresponding to map
xlim(c(15.28, 15.38)) +
ylim(c(-4.41, -4.30))






r ggplot2 gis heatmap ggmap






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Feb 21 at 14:41









Gilad Green

30.1k53257




30.1k53257










asked Nov 25 '18 at 1:01









Dan CDan C

203




203













  • points are generally coloured with aes(..., color = ...) not fill

    – Jack Brookes
    Nov 25 '18 at 1:07











  • @JackBrookes thanks for your response! In my experience, though, the "color" aesthetic refers to the outline of a point, while the "fill" aesthetic refers to the shade inside. I have been able to use "fill" when changing point colors quite often in the past so I don't think that's the problem. ETA: I stand thoroughly corrected! thank you :)

    – Dan C
    Nov 25 '18 at 1:10













  • That's correct, but the default point used in geom_point has no outline and its color is controlled by color and not fill. This can be changed depending on which shape you use

    – Jack Brookes
    Nov 25 '18 at 17:50













  • @JackBrookes good to know! thank you.

    – Dan C
    Nov 26 '18 at 22:49



















  • points are generally coloured with aes(..., color = ...) not fill

    – Jack Brookes
    Nov 25 '18 at 1:07











  • @JackBrookes thanks for your response! In my experience, though, the "color" aesthetic refers to the outline of a point, while the "fill" aesthetic refers to the shade inside. I have been able to use "fill" when changing point colors quite often in the past so I don't think that's the problem. ETA: I stand thoroughly corrected! thank you :)

    – Dan C
    Nov 25 '18 at 1:10













  • That's correct, but the default point used in geom_point has no outline and its color is controlled by color and not fill. This can be changed depending on which shape you use

    – Jack Brookes
    Nov 25 '18 at 17:50













  • @JackBrookes good to know! thank you.

    – Dan C
    Nov 26 '18 at 22:49

















points are generally coloured with aes(..., color = ...) not fill

– Jack Brookes
Nov 25 '18 at 1:07





points are generally coloured with aes(..., color = ...) not fill

– Jack Brookes
Nov 25 '18 at 1:07













@JackBrookes thanks for your response! In my experience, though, the "color" aesthetic refers to the outline of a point, while the "fill" aesthetic refers to the shade inside. I have been able to use "fill" when changing point colors quite often in the past so I don't think that's the problem. ETA: I stand thoroughly corrected! thank you :)

– Dan C
Nov 25 '18 at 1:10







@JackBrookes thanks for your response! In my experience, though, the "color" aesthetic refers to the outline of a point, while the "fill" aesthetic refers to the shade inside. I have been able to use "fill" when changing point colors quite often in the past so I don't think that's the problem. ETA: I stand thoroughly corrected! thank you :)

– Dan C
Nov 25 '18 at 1:10















That's correct, but the default point used in geom_point has no outline and its color is controlled by color and not fill. This can be changed depending on which shape you use

– Jack Brookes
Nov 25 '18 at 17:50







That's correct, but the default point used in geom_point has no outline and its color is controlled by color and not fill. This can be changed depending on which shape you use

– Jack Brookes
Nov 25 '18 at 17:50















@JackBrookes good to know! thank you.

– Dan C
Nov 26 '18 at 22:49





@JackBrookes good to know! thank you.

– Dan C
Nov 26 '18 at 22:49












1 Answer
1






active

oldest

votes


















1














As mentioned in the comments you have to change the fill to color. Here is how I achieved it:



library(tidyverse)
table = tibble(long = c(15.28, 15.29, 15.3, 15.31, 15.32), lat = c(-4.4, -4.39, -4.38, -4.37, -4.36), consumption = c(NA, 3, 54, 6, 8))

##Changed here to color
mapping = aes_string(x = 'long', y = 'lat', color = 'consumption')

# define breaks, limits, colors

low = 'seashell'
high = 'tan3'
breaks = c(0, max(na.omit(table)[['consumption']]))
limits = breaks

# plot

ggplot() +
# points
geom_point(mapping = mapping,
data = table, alpha = 0.7, size = 4) +
# point colors
#Change here to aesthetics = color
scale_color_gradient(low = low, high = high, na.value = 'darkgrey', guide = 'colorbar', aesthetics = 'color'
, breaks = breaks, limits = limits) +
# title
ggtitle('consumption') +
# title formatting
theme(plot.title = element_text(color = "red", size = 10, face = "bold", hjust=0),
legend.position="bottom",
legend.text=element_text(size=9),
legend.title=element_text(size=9)) +
# legend
guides(fill=guide_colorbar(title='consumption')) +
# get rid of axes, etc.
theme(axis.line = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank()) +
xlab('') +
ylab('') +
# make legend correct
theme(legend.box = 'vertical') +
# add max/min corresponding to map
xlim(c(15.28, 15.38)) +
ylim(c(-4.41, -4.30))


enter image description here






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53463795%2fggplot2-scale-fill-gradient-function-not-changing-point-colors-r%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    As mentioned in the comments you have to change the fill to color. Here is how I achieved it:



    library(tidyverse)
    table = tibble(long = c(15.28, 15.29, 15.3, 15.31, 15.32), lat = c(-4.4, -4.39, -4.38, -4.37, -4.36), consumption = c(NA, 3, 54, 6, 8))

    ##Changed here to color
    mapping = aes_string(x = 'long', y = 'lat', color = 'consumption')

    # define breaks, limits, colors

    low = 'seashell'
    high = 'tan3'
    breaks = c(0, max(na.omit(table)[['consumption']]))
    limits = breaks

    # plot

    ggplot() +
    # points
    geom_point(mapping = mapping,
    data = table, alpha = 0.7, size = 4) +
    # point colors
    #Change here to aesthetics = color
    scale_color_gradient(low = low, high = high, na.value = 'darkgrey', guide = 'colorbar', aesthetics = 'color'
    , breaks = breaks, limits = limits) +
    # title
    ggtitle('consumption') +
    # title formatting
    theme(plot.title = element_text(color = "red", size = 10, face = "bold", hjust=0),
    legend.position="bottom",
    legend.text=element_text(size=9),
    legend.title=element_text(size=9)) +
    # legend
    guides(fill=guide_colorbar(title='consumption')) +
    # get rid of axes, etc.
    theme(axis.line = element_blank(),
    axis.text = element_blank(),
    axis.ticks = element_blank()) +
    xlab('') +
    ylab('') +
    # make legend correct
    theme(legend.box = 'vertical') +
    # add max/min corresponding to map
    xlim(c(15.28, 15.38)) +
    ylim(c(-4.41, -4.30))


    enter image description here






    share|improve this answer




























      1














      As mentioned in the comments you have to change the fill to color. Here is how I achieved it:



      library(tidyverse)
      table = tibble(long = c(15.28, 15.29, 15.3, 15.31, 15.32), lat = c(-4.4, -4.39, -4.38, -4.37, -4.36), consumption = c(NA, 3, 54, 6, 8))

      ##Changed here to color
      mapping = aes_string(x = 'long', y = 'lat', color = 'consumption')

      # define breaks, limits, colors

      low = 'seashell'
      high = 'tan3'
      breaks = c(0, max(na.omit(table)[['consumption']]))
      limits = breaks

      # plot

      ggplot() +
      # points
      geom_point(mapping = mapping,
      data = table, alpha = 0.7, size = 4) +
      # point colors
      #Change here to aesthetics = color
      scale_color_gradient(low = low, high = high, na.value = 'darkgrey', guide = 'colorbar', aesthetics = 'color'
      , breaks = breaks, limits = limits) +
      # title
      ggtitle('consumption') +
      # title formatting
      theme(plot.title = element_text(color = "red", size = 10, face = "bold", hjust=0),
      legend.position="bottom",
      legend.text=element_text(size=9),
      legend.title=element_text(size=9)) +
      # legend
      guides(fill=guide_colorbar(title='consumption')) +
      # get rid of axes, etc.
      theme(axis.line = element_blank(),
      axis.text = element_blank(),
      axis.ticks = element_blank()) +
      xlab('') +
      ylab('') +
      # make legend correct
      theme(legend.box = 'vertical') +
      # add max/min corresponding to map
      xlim(c(15.28, 15.38)) +
      ylim(c(-4.41, -4.30))


      enter image description here






      share|improve this answer


























        1












        1








        1







        As mentioned in the comments you have to change the fill to color. Here is how I achieved it:



        library(tidyverse)
        table = tibble(long = c(15.28, 15.29, 15.3, 15.31, 15.32), lat = c(-4.4, -4.39, -4.38, -4.37, -4.36), consumption = c(NA, 3, 54, 6, 8))

        ##Changed here to color
        mapping = aes_string(x = 'long', y = 'lat', color = 'consumption')

        # define breaks, limits, colors

        low = 'seashell'
        high = 'tan3'
        breaks = c(0, max(na.omit(table)[['consumption']]))
        limits = breaks

        # plot

        ggplot() +
        # points
        geom_point(mapping = mapping,
        data = table, alpha = 0.7, size = 4) +
        # point colors
        #Change here to aesthetics = color
        scale_color_gradient(low = low, high = high, na.value = 'darkgrey', guide = 'colorbar', aesthetics = 'color'
        , breaks = breaks, limits = limits) +
        # title
        ggtitle('consumption') +
        # title formatting
        theme(plot.title = element_text(color = "red", size = 10, face = "bold", hjust=0),
        legend.position="bottom",
        legend.text=element_text(size=9),
        legend.title=element_text(size=9)) +
        # legend
        guides(fill=guide_colorbar(title='consumption')) +
        # get rid of axes, etc.
        theme(axis.line = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank()) +
        xlab('') +
        ylab('') +
        # make legend correct
        theme(legend.box = 'vertical') +
        # add max/min corresponding to map
        xlim(c(15.28, 15.38)) +
        ylim(c(-4.41, -4.30))


        enter image description here






        share|improve this answer













        As mentioned in the comments you have to change the fill to color. Here is how I achieved it:



        library(tidyverse)
        table = tibble(long = c(15.28, 15.29, 15.3, 15.31, 15.32), lat = c(-4.4, -4.39, -4.38, -4.37, -4.36), consumption = c(NA, 3, 54, 6, 8))

        ##Changed here to color
        mapping = aes_string(x = 'long', y = 'lat', color = 'consumption')

        # define breaks, limits, colors

        low = 'seashell'
        high = 'tan3'
        breaks = c(0, max(na.omit(table)[['consumption']]))
        limits = breaks

        # plot

        ggplot() +
        # points
        geom_point(mapping = mapping,
        data = table, alpha = 0.7, size = 4) +
        # point colors
        #Change here to aesthetics = color
        scale_color_gradient(low = low, high = high, na.value = 'darkgrey', guide = 'colorbar', aesthetics = 'color'
        , breaks = breaks, limits = limits) +
        # title
        ggtitle('consumption') +
        # title formatting
        theme(plot.title = element_text(color = "red", size = 10, face = "bold", hjust=0),
        legend.position="bottom",
        legend.text=element_text(size=9),
        legend.title=element_text(size=9)) +
        # legend
        guides(fill=guide_colorbar(title='consumption')) +
        # get rid of axes, etc.
        theme(axis.line = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank()) +
        xlab('') +
        ylab('') +
        # make legend correct
        theme(legend.box = 'vertical') +
        # add max/min corresponding to map
        xlim(c(15.28, 15.38)) +
        ylim(c(-4.41, -4.30))


        enter image description here







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 25 '18 at 1:09









        Harro CyrankaHarro Cyranka

        1,6081614




        1,6081614
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53463795%2fggplot2-scale-fill-gradient-function-not-changing-point-colors-r%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Costa Masnaga

            Fotorealismo

            Sidney Franklin