R 如何增加ggplot2地图连续颜色填充的存储箱数量

R 如何增加ggplot2地图连续颜色填充的存储箱数量,r,ggplot2,R,Ggplot2,我对使用ggplot2在R中创建地图比较陌生,但我已经为这个问题挣扎了几天。我已经创建了绘图,但似乎无法增加用于将颜色映射到我的值的容器数量 这是一个问题,因为地图没有很好地显示数据的变化。我不确定我是否正确处理了这个问题 这是我的密码: region=c('alaska','alabama','arkansas','arizona','california','colorado','connecticut','florida','georgia','hawaii','iowa','idaho'

我对使用ggplot2在R中创建地图比较陌生,但我已经为这个问题挣扎了几天。我已经创建了绘图,但似乎无法增加用于将颜色映射到我的值的容器数量

这是一个问题,因为地图没有很好地显示数据的变化。我不确定我是否正确处理了这个问题

这是我的密码:

region=c('alaska','alabama','arkansas','arizona','california','colorado','connecticut','florida','georgia','hawaii','iowa','idaho','illinois','indiana','kansas','kentucky','louisiana','massachusetts','maryland','maine','michigan','minnesota','missouri','mississippi','montana','north carolina','north dakota','nebraska','new hampshire','new jersey','new mexico','nevada','new york','ohio','oregon','pennsylvania','south carolina','south dakota','tennessee','texas','utah','virginia','vermont','washington','wisconsin','west virginia','oklahoma','wyoming')

sales=c(46,1240,471,2292,13427,1574,261,10036,826,1508,184,939,2356,1329,434,271,714,208,2027,21,950,500,1871,147,249,1204,69,175,369,1968,606,656,2369,2422,525,2902,1709,126,1563,12046,931,2271,46,2260,250,122,0,0)

state_data = as.data.frame(cbind(region,sales))

library(ggplot2)
library(maps)
all_states <- map_data("state")

D = merge(all_states, state_data, by = "region")
D = D[with(D,order(D$group,D$order)),] 

p = ggplot()
p = p + geom_polygon( data=D, aes(x=long, y=lat, group = group, fill=D$sales),colour="white" )
p = p + xlab("")
p = p + ylab("")
p = p + labs(title = "sales")
p = p + guides(color=FALSE) 
p = p + guides(size=FALSE) 
p = p + guides(fill=guide_legend() )
p = p + guides(fill= guide_colorbar(title="sales",barheight = 1,barwidth=15,direction="horizontal",nbin=8) )
p = p + theme(legend.position="bottom")
p
region=c(‘阿拉斯加’、‘阿拉巴马’、‘阿肯色’、‘亚利桑那’、‘加利福尼亚’、‘科罗拉多’、‘康涅狄格’、‘佛罗里达’、‘乔治亚’、‘夏威夷’、‘爱荷华’、‘伊利诺伊’、‘印第安纳’、‘堪萨斯’、‘肯塔基’、‘路易斯安那’、‘马萨诸塞’、‘马里兰’、‘缅因’、‘密歇根’、‘明尼苏达’、‘密苏里’、‘密西西比’、‘蒙大拿’、‘北卡罗来纳’、‘北达科他’、‘内布拉斯加州’、‘新罕布什尔’、‘新泽西’、‘新墨西哥州’)ico’、‘内华达’、‘纽约’、‘俄亥俄’、‘俄勒冈州’、‘宾夕法尼亚州’、‘南卡罗来纳州’、‘南达科他州’、‘田纳西州’、‘德克萨斯州’、‘犹他州’、‘弗吉尼亚州’、‘佛蒙特州’、‘华盛顿州’、‘威斯康星州’、‘西弗吉尼亚州’、‘俄克拉荷马州’、‘怀俄明州’)
销售=c(46124047122921342715742611003686261508184939235613294342717142082027,2195050018711472491204,69175369196860662369242252902170912663120469312271,4622602501222,0,0)
state_data=as.data.frame(cbind(地区、销售))
图书馆(GG2)
图书馆(地图)

所有说明您遇到的问题都与以下事实有关:
sales
列是一个因素,而不是一个数字。下面将解决这一问题:

D = merge(all_states, state_data, by = "region")
D = D[with(D,order(D$group,D$order)),] 
D$sales= as.numeric(D$sales) # this is the important bit...

p = ggplot(data=D) + 
     geom_polygon(aes(x=long, y=lat, 
                      group = group, fill=sales), 
                  colour = "white" ) + # Do not use D$, by use the column name
     xlab("") + ylab("") + labs(title = "sales") + theme(legend.position="bottom")
p

…或具有双色刻度:

p + scale_fill_gradient2(midpoint = 20)

一些风格注释:

  • 不要将向量(
    D$sales
    )用作美学,只使用列名(
    sales
  • 我不喜欢常量
    p=p+…
    样式,只需在一行末尾使用
    +
    ,然后转到下一行

嘿,保罗,非常感谢你的回复。我认为显示为因子的数据是我发布的代码中的一个错误。我得到了类似的结果。销售数据的范围是[014000],但您发布的图像显示它仅为40或50。我能够生成与您发布的第一张类似的地图,但是当比例增加到14000时,填充梯度仅减少到3个桶:[050001000000+]。你需要让你的例子更现实。此外,我最近发布了一个问题,答案可能会让你感兴趣。