2016-12-27 2 views
0

Я попытался создать альфа-сюжет, но я не мог найти правильный способ сделать это. Я попробовал разное сочетание, и я почти там, но мне нужна небольшая помощь.
Мой вопрос в том, как я могу избавиться от синего цвета в сюжете.ggplot scale alpha непрерывный цвет заливки

Мой скрипт `

p <- ggplot(df, aes(x=x, y=y)) 
p + geom_hex(aes(alpha=..count..),bins=20)+ 
    scale_x_log10("ratio following/followers", 
       labels = trans_format("log10", math_format(10^.x))) + 
    scale_y_log10("ratio messages received/sent", 
       labels = trans_format("log10", math_format(10^.x))) + 
    theme_bw() + 
    theme(panel.background = element_blank(), 
     panel.grid.major = element_blank(), panel.grid.minor=element_blank(), 
     plot.background = element_blank())+ 
    #guides(fill=FALSE)+ 
    scale_alpha_continuous ("Counts",breaks=c(0,2000,4000,6000,8000,10000))+ 
    geom_vline(xintercept =1, color="red", size=0.25, linetype=5)+ 
    geom_hline(yintercept =1, color="red", size=0.25, linetype=5) + 
    annotate('text', x=500, y=0.01, size=3, label="4\ncommon\nusers") + 
    annotate('text', x=0.0001, y=0.01, size=3, label="3\nbroadcasters") + 
    annotate('text', x=0.0001, y=7000, size=3, label="1\ninfluentials") + 
    annotate('text', x=500, y=7000, size=3, label="2\nhidden\ninfluentials") 

Этот скрипт создает этот участок

This scrip creates this plot

я могу быть в состоянии избавиться от синего легенды с активацией "направляющих (заполняющая = FALSE) +" в тексте сценария, и он дает следующее:

guides(fill=FALSE)+

You can reach sample data from here

Благодаря @Didzis Elferts за его ответ. Я не мог быть уверен в легенде, и сюжет разбивает цвета. Как видите, эти фотографии 10K и 8K имеют один и тот же цвет (я прав!), Поэтому 10K должно быть темнее, не должно быть. 10K 8K

+0

С вашего участков ТЭЦ и HDP, кажется, что вы используете разные данные. Если это так, то максимальное значение альфа-диапазона присваивается в соответствии с вашими фактическими данными. –

+0

Вы правы, поэтому в этом случае мне нужно объединить данные или есть способ исправить это в сюжете. – eabanoz

+0

Самый простой способ - объединить данные и построить их с помощью граней. Тогда у вас будет одна легенда для обеих групп. –

ответ

3

Функция geom_hex() по умолчанию карты рассчитывает на заполнение и таким образом вы получаете заполнить градиент (синий по умолчанию). Если вы просто хотите, чтобы количество карт соответствовало альфа-значениям, вы должны назначить fill = за пределами aes()geom_hex() для некоторого цвета (например, в качестве примера используется grey45). Поскольку fill = установлен за пределами aes(), для значений заполнения не будет легенды.

p + geom_hex(aes(alpha=..count..),bins=20, fill = "grey45")+ ... 

enter image description here

+0

Я фактически использовал fill = "# 00000" из aes, но я не мог быть уверен в перерывах в цвете легенды, а цвет сюжета имеет тот же цвет или нет. – eabanoz

+0

Если вы установите 'fill =' вне 'aes()', тогда ваша легенда и график будут иметь одинаковые разрывы/значения, потому что все элементы будут иметь один и тот же цвет (заливка), и только альфа-значения будут меняться (что соответствует вашей легенде) –

+0

Спасибо @Didzis Elferts. Я только что обновил вопрос, чтобы быть более конкретным. Надеюсь, я смогу проясниться. – eabanoz

Смежные вопросы