简体   繁体   English

如何更改ggplot气泡图中的轮廓颜色?

[英]How do I change the colour of an outline in a ggplot bubble plot?

I am putting together a bubble chart in ggplot2, and want to change the outline of my bubbles (to comply with work's formatting guidelines). 我将一个气泡图放在ggplot2中,并希望更改气泡的轮廓(以符合工作的格式指南)。 My problem is that I'm using colors to group variables, and I'm using a custom palette (again, for work). 我的问题是我正在使用颜色对变量进行分组,并且正在使用自定义调色板(再次用于工作)。 Ideally, I'd like to put black borders on the bubbles. 理想情况下,我想在气泡上加上黑色边框。

Here's my data-frame: 这是我的数据框:

mmur <- structure(list(Medgrowth = c(-1.02232983588915, 3.01155115511551,-0.220617729642996, 1.96506550218342, 0.943970767356888, 0.810810810810807,0.0166694449074782, 0.21064457239153, 0.0876731544801004, 0.132216835610393,0.370644922164558,0.23378141437756, 1.27810650887574, 0.42301184433164,0.394880174291941, 0.54216172568924, 1.32690882134916, 0.499722376457527,-0.108885017421599), Medunemp = c(4.430550475, 2.5060469975,4.1239796475, 2.0585977455, 3.846659243, 3.1792594425, 4.0033450105,6.0882984255, 3.091889808,3.7462810695, 2.4038147815, 3.0065393475,2.3331894185, 4.9482480125, 2.0955470885, 1.616694725, 1.873037069,3.060170157, 3.0131425595), Empsize = c(324.2,270.6, 962.1,149, 962.4, 421.1, 1197.8, 777.8, 552.8, 234.8, 421.1, 203.2,915.7, 396.1, 685.9, 904.5, 1366.9, 215.4, 440.5), Eduratio = c(0.1,0.2, 0.1, 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.3, 0.3, 0.2, 0.5, 0.2,0.3, 0.6, 0.4, 0.2, 0.1), Names = structure(c(3L, 12L, 11L, 7L,5L, 19L, 17L, 1L, 18L, 10L, 8L, 16L, 14L, 2L, 15L, 6L, 9L, 4L,13L), .Label = c("Accom", "Admin","Agric", "Arts.", "Const","Educa", "Elect", "Finan", "Healt","Infor","Manuf","Minin","Other", "Profe", "Publi", "Renta", "Retai", "Trans", "Whole"), class = "factor"), colour1 = structure(c(6L, 5L, 6L, 5L, 6L,5L, 6L, 6L, 6L, 4L, 4L, 5L, 2L, 5L, 4L, 1L, 3L, 5L, 6L), .Label = c("#8C2D04","#CC4C02", "#EC7014", "#FE9929","#FEC44F", "#FEE391"), class = "factor")), .Names = c("Medgrowth","Medunemp", "Empsize", "Eduratio", "Names", "colour1"), row.names = c("Agric","Minin", "Manuf", "Elect", "Const", "Whole", "Retai", "Accom","Trans", "Infor", "Finan", "Renta", "Profe", "Admin", "Publi","Educa", "Healt", "Arts.", "Other"), class = "data.frame")

And here's my plot code: 这是我的情节代码:

bbubc1 <- ggplot(mmur, aes(x = Medgrowth, y = Medunemp, size = Empsize, label = Names, colour = colour1)) +
    geom_point() + 
    scale_size(range = c(5, sqrt(max(mmur$Empsize)/min(mmur$Empsize)*5^2)), name = "Employment in\n2012 (thousands)") +
    geom_text(size = 4, colour = "black", vjust = -1) + 
    scale_colour_manual(values = levels(mmur$colour1), name = "Per cent with\ntertiary degree", label = c(60, 50, 40, 30, 20, 10)) + 
    xlab("Median employment growth rate 2001 - 2012") +
    ylab("Median unemployment rate 2001 - 2012") + 
    opts(axis.text.x=theme_text(angle=0, hjust=0, size = 16)) + 
    opts(axis.text.y=theme_text(angle=0, hjust=0, size = 16)) +
    opts(axis.title.x=theme_text(size = 16)) + 
    opts(legend.title = theme_text(size = 16)) + 
    opts(axis.title.y=theme_text(size = 16, angle = 90)) + 
    geom_vline(colour = I("grey")) + 
    geom_hline(colour = I("grey")) + 
    ylim(c(0,7))

The plot is here: 情节在这里: 我要编辑的情节

Some of R's plotting characters allow both an internal fill and an edge colour, so using one of these shapes to draw your points, and replacing your colour aesthetics with fill , should do the job: R的某些绘图字符允许内部填充和边缘颜色,因此使用以下形状之一绘制点,并用fill代替colour美感即可:

ggplot(mmur, aes(x = Medgrowth, y = Medunemp, size = Empsize, label = Names, fill = colour1)) +
  geom_point(shape=21, colour='black') + 
  scale_size(range = c(5, sqrt(max(mmur$Empsize)/min(mmur$Empsize)*5^2)), name = "Employment in\n2012 (thousands)") +
  geom_text(size = 4, colour = "black", vjust = -1) + 
  scale_fill_manual(values = levels(mmur$colour1), name = "Per cent with\ntertiary degree", label = c(60, 50, 40, 30, 20, 10)) + 
  xlab("Median employment growth rate 2001 - 2012") +
  ylab("Median unemployment rate 2001 - 2012") + 
  opts(axis.text.x=theme_text(angle=0, hjust=0, size = 16)) + 
  opts(axis.text.y=theme_text(angle=0, hjust=0, size = 16)) +
  opts(axis.title.x=theme_text(size = 16)) + 
  opts(legend.title = theme_text(size = 16)) + 
  opts(axis.title.y=theme_text(size = 16, angle = 90)) + 
  geom_vline(colour = I("grey")) + 
  geom_hline(colour = I("grey")) + 
  ylim(c(0,7))

Run example(points) and go to the third plot to see which shapes can be filled like this, ie shapes 21:25. 运行example(points)并转到第三个图,以查看可以像这样填充哪些形状,即形状21:25。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM