我有两个问题:
虽然这个数据的范围是-1到5,但是它们中的大多数都有-1到1之间的值。因此,我想知道我是否可以将结果和颜色之间的关系调整为非线性(也就是说,-1和1之间的变化更大,但2和5之间的变化较小)。使用GGplot2可以实现吗?
如何将比例尺移动到地图中,例如,在右下角位置?
这是我的代码:
library(ggplot2)
library(ggmap)
library(data.table)
map<-get_map(location='united states', zoom=4, maptype = "terrain",
source='google',color='bw')
ggmap(map) + geom_point(
aes(x=longitude, y=latitude, show_guide = TRUE, colour=V1),
data=plot.data, alpha=0.3, na.rm = T) +
scale_color_gradient(low="red", high = "red4", name = "Level")
答案 0 :(得分:1)
您可以使用scale_colour_gradientn
并定义values
(来自?scale_colour_gradientn
:,如果颜色不能沿着渐变均匀定位,则此向量会给出位置(介于0和1之间)对于颜色矢量中的每种颜色。),例如:
ggplot(data = iris, aes(x = Species, y = Sepal.Width, colour = Sepal.Length)) +
geom_point() +
scale_colour_gradientn(colours = c("blue", "red", "orange"),
values = c(0, 0.1, 1))
要更改图例的位置,请查看?theme
&gt; legend.position
和/或legend.justification
答案 1 :(得分:0)
您可以尝试以下命令:
+theme(legend.position = c(xxx, xxx))
答案 2 :(得分:0)
基于甜菜根的答案,可以编写一个简短的辅助函数,将原始比例的值转换为用于绘图的0-1比例。
gradient_setter <- function(x, low = NULL, mid = 0, high = NULL){
rn <- range(x, na.rm = TRUE)
(c(rn[1], low, mid, high, rn[2]) - rn[1])/(rn[2] - rn[1])
}
ggplot(data = iris, aes(x = Species, y = Sepal.Width, colour = Sepal.Length)) +
geom_point() +
scale_colour_gradientn(colours = c("blue", "red", "orange"),
values = gradient_setter(iris$Sepal.Length, mid = 5, high = 5.8))