ggplot2 scale_fill_gradient() function not changing point colors R
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
add a comment |
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
points are generally coloured withaes(..., color = ...)
notfill
– 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 ingeom_point
has no outline and its color is controlled bycolor
and notfill
. 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
add a comment |
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
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
r ggplot2 gis heatmap ggmap
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 withaes(..., color = ...)
notfill
– 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 ingeom_point
has no outline and its color is controlled bycolor
and notfill
. 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
add a comment |
points are generally coloured withaes(..., color = ...)
notfill
– 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 ingeom_point
has no outline and its color is controlled bycolor
and notfill
. 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
add a comment |
1 Answer
1
active
oldest
votes
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))
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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))
add a comment |
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))
add a comment |
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))
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))
answered Nov 25 '18 at 1:09
Harro CyrankaHarro Cyranka
1,6081614
1,6081614
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
points are generally coloured with
aes(..., color = ...)
notfill
– 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 bycolor
and notfill
. 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