Заполните пузыри цветом в свиплоте () в R (обзорный пакет) - PullRequest
0 голосов
/ 26 апреля 2018

Я использую очень хороший пакет survey для создания графиков стратифицированных выборок в R. Существуют различные способы создания диаграмм рассеяния, которые представляют веса выборок, но я предпочитаю так называемые Bubble plots. Bubble plots - точечные диаграммы с кружками, площадь которых пропорциональна весу выборки.

Я хотел бы знать, смогу ли я заполнить пузыри заданным цветом. Настройка цвета контура работает, как описано ниже. Однако изменить тип символа с помощью параметра pch не удается (это будет стандартный метод для диаграмм рассеяния в R).

library("survey")
data(api)
dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc)

# create bubble plot
svyplot(api00~api99, design=dstrat,
        basecol=function(df){c("goldenrod","tomato","sienna")[as.numeric(df$stype)]},
        style="bubble",alpha=c(0,1))

# try to set fill with pch (fails without error message)
svyplot(api00~api99, design=dstrat,
        basecol=function(df){c("goldenrod","tomato","sienna")[as.numeric(df$stype)]},
        style="bubble",alpha=c(0,1),pch=15) 

Bubble plot with custom color but without custom fill

1 Ответ

0 голосов
/ 26 апреля 2018

Мы можем сделать следующее:

getcol <- function(df) c("goldenrod","tomato","sienna")[as.numeric(df$stype)]

svyplot(api00 ~ api99,
    design = dstrat,
    basecol = getcol,
    style = "bubble",
    alpha = c(0,1),
    pch = 21,
    bg = getcol(dstrat$variables))

enter image description here

Некоторые комментарии:

  1. В базе R's plot, при использовании pch = 21 вы можете установить цвет контура с помощью col и цвет заливки с помощью bg.
  2. Здесь basecol является специфическим svyplot аргументом, который внутренне устанавливает контурcolor col.
  3. Мы можем использовать ту же функцию, которую мы использовали для basecol, чтобы заполнить круги соответствующим цветом, признав, что dstrat$variables - это data.frame, который содержит столбец stype.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...