将连续刻度从十进制更改为百分比

时间:2014-04-02 19:29:08

标签: r ggplot2 scale missing-data

渗透规模列为小数(.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

mydata和渗透负责人

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.48207
head(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

我也注意到有一条白色条带,类似于华盛顿缺少的多边形......你碰巧知道为什么会这样吗?我试图重新合并我的数据并再次订购,但结果仍然相同。

非常感谢任何见解。

Map

另外,我注意到华盛顿缺少白色多边形?有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:3)

您可以加载scales包并使用scale_fill_continuous(labels = percent)。百分比参数在帮助文本的参数部分中没有很好地记录,但是可以在示例部分here中找到此函数的示例以及scales包中的其他方便格式。

一个小例子:

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)

enter image description here