r - 将连续刻度从小数更改为百分比

标签 r ggplot2 scale missing-data

渗透率的比例以小数形式列出(0.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

我还注意到有一条白色的 strip ,类似于华盛顿缺少的多边形……你知道这是为什么吗?我尝试重新合并数据并再次订购,但结果仍然相同。

任何见解将不胜感激。

Map

另外,我注意到华盛顿缺少一个白色多边形?有谁知道为什么会发生这种情况?

最佳答案

您可以加载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

关于r - 将连续刻度从小数更改为百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22821189/

相关文章:

r - 在 R 中使用 ggplot 更改图例的一部分?

r - 生成季节性图,但具有财政年度开始/结束日期

r - 使用 ggplot2 在 Venn 中自定义重叠区域的颜色

jquery - 图像 block 问题内的图像比例

r - 从列名称中删除点

r - 在 R 中嵌入 data.frames 的嵌套列表

r - R 中的 Knn 回归

Android:使用背景图像缩放按钮

css - Firefox 的规模和硬件加速过渡问题

r - 在 R 中转换 data.frame