渗透的比例被列为十进制(.5和向下),但我在将其更改为百分比时遇到了问题。
我尝试使用以下代码将数据格式化为百分比。
penetration_levels$Penetration<-sprintf("%.1f %%", 100*penetration_levels$Penetration)它从格式意义上起作用,但当我试图绘制图表时,我发现了一个错误,即渗透被用作一个离散的,而不是连续的尺度。
若要解决此问题,请使用此代码将其格式化为数值变量。
penetration_levels$Penetration<-as.numeric(as.character(penetration_levels$Penetration))其中返回了一堆NA。有人知道如何将其更改为百分比的其他方法吗?
这是我用来映射的代码
ggplot代码:
map <- ggplot(penetration_levels,aes(long,lat,group=region,fill=Penetration),) + geom_polygon() + coord _equal() + scale_fill_gradient2(low="red",mid="white",high="green",midpoint=.25)
map <- map + geom_point(data=mydata, aes(x=long, y=lat,group=1,fill=0, size=Annualized.Opportunity), color="gray6") + scale_size(name="Total Annual Opportunity-Millions",range=c(2,4))
map <- map + theme(plot.title = element_text(size = 12,face="bold"))
map我的数据和渗透的头
head(mydata)
Sold.To.Customer City State Annualized.Opportunity location lat long
21 10000110 NEW YORK NY 12.142579 NEW YORK,NY 40.71435 -74.00597
262 10016487 FORT LAUDERDALE FL 12.087310 FORT LAUDERDALE,FL 26.12244 -80.13732
349 11001422 ALLEN PARK MI 10.910575 ALLEN PARK,MI 42.25754 -83.21104
19 10000096 ALTON IL 10.040067 ALTON,IL 38.89060 -90.18428
477 11067228 BAY CITY TX 10.030829 BAY CITY,TX 28.98276 -95.96940
230 10014909 BETHPAGE NY 9.320271 BETHPAGE,NY 40.74427 -73.48207head(penetration_levels)
State region long lat group order subregion state To From Total Penetration
17 AL alabama -87.46201 30.38968 1 1 <NA> AL 10794947 12537359 23332307 0.462661
18 AL alabama -87.48493 30.37249 1 2 <NA> AL 10794947 12537359 23332307 0.462661
22 AL alabama -87.52503 30.37249 1 3 <NA> AL 10794947 12537359 23332307 0.462661
36 AL alabama -87.53076 30.33239 1 4 <NA> AL 10794947 12537359 23332307 0.462661
37 AL alabama -87.57087 30.32665 1 5 <NA> AL 10794947 12537359 23332307 0.462661
65 AL alabama -87.58806 30.32665 1 6 <NA> AL 10794947 12537359 23332307 0.462661我还注意到有一个白色的条状,类似于华盛顿…中缺少的多边形。你知道为什么吗?我试图重新合并我的数据,并重新排序,但结果仍然一样。
任何洞察力都将不胜感激。

另外,我注意到华盛顿缺少了一个白色多边形?有人知道为什么会这样吗?
发布于 2014-04-02 20:57:02
您可以加载scales包并使用scale_fill_continuous(labels = percent)。在帮助文本的参数部分中没有很好地记录百分比参数,但是这个函数的示例以及来自scales包的其他方便格式可以在示例部分here中找到。
一个小例子:
library(scales)
df <- data.frame(long = 1:10, lat = 1:10,
penetration = seq(from = 0.1, to = 1, by = 0.1))
ggplot(data = df, aes(x = long, y = lat, fill = penetration)) +
geom_point(shape = 21, size = 6) +
scale_fill_continuous(labels = percent)

https://stackoverflow.com/questions/22821189
复制相似问题