2016-09-11 10 views
0

В настоящее время я пытаюсь вручную изменить размеры пузырьков для карты пузырьков Plotly. Мне удалось изменить цвета карты, используя предоставленные данные, но я не могу использовать ту же логику для изменения размера. Чтобы изменить цвета, я просто позвонил: colors_wanted <- c("red", "blue", "black", "pink") и передал эту команду colors в пределах plot_ly. Как вы думаете, можно изменить размеры, а не использовать формулу в этом случае sqrt, чтобы потребовать размеры?Ручное изменение размера пузырьков для плоской карты пузырьков в R

library(plotly) 
df <- read.csv('https://raw.githubusercontent.com/plotly/datasets/master/2014_us_cities.csv') 
df$hover <- paste(df$name, "Population", df$pop/1e6, " million") 

df$q <- with(df, cut(pop, quantile(pop), include.lowest = T)) 
levels(df$q) <- paste(c("1st", "2nd", "3rd", "4th"), "Quantile") 
df$q <- as.ordered(df$q) 

g <- list(scope = 'usa',projection = list(type = 'albers usa'),showland = TRUE,landcolor = toRGB("gray85"), 
subunitwidth = 1, countrywidth = 1, subunitcolor = toRGB("white"),countrycolor = toRGB("white")) 

plot_ly(df, lon = lon, lat = lat, text = hover, 
    marker = list(size = sqrt(pop/10000) + 1, line = list(width = 0)), 
    color = q, colors= colors_wanted, type = 'scattergeo', locationmode = 'USA-states') %>% 
    layout(title = '2014 US city populations<br>(Click legend to toggle)', geo= g) 
+0

Непонятно, что вы хотите. Вы пытаетесь отформатировать размер в соответствии с некоторой переменной, пытаетесь ли вы уменьшить или увеличить размер всех пузырьков и т. Д. –

+0

@CyrusMohammadian Hi, Благодарим за отзыв. Я пытаюсь изменить размеры пузыря на основе моих собственных показателей. Например, я могу изменить все размеры пузырьков на «5» (делая размер = 5), но я не могу изменить размеры до (1,2,3,4) по отношению к каждому квантилю, поскольку я был в состоянии с цветами. Надеюсь, это прояснит ситуацию. – aselvendran

+0

@ Hack-R Привет, Насколько я понимаю, вызов sqrt (pop/10000) + 1 изменяет размеры каждого пузыря относительно квантиля. Я надеялся изменить размеры пузырьков, не пройдя процесс поиска оптимального размера и, надеюсь, жесткого кода. Например, если данные о народонаселении должны были быть увеличены до двух, то мне пришлось бы взять четвертый корень населения, чтобы получить ту же часть размера пузыря. – aselvendran

ответ

2

Если вы хотите, чтобы размер, чтобы соответствовать квартили, то это работает (и есть любое количество вариаций на это, что вы могли бы сделать, чтобы сделать размер более аналитический значимым):

plot_ly(df, lon = lon, lat = lat, text = hover, size = as.numeric(df$q), 
     #marker = list(size = sqrt(pop/10000) + 1, line = list(width = 0)), 
     color = q, colors= colors_wanted, type = 'scattergeo', locationmode = 'USA-states') %>% 
    layout(title = '2014 US city populations<br>(Click legend to toggle)', geo= g) 

enter image description here

Вот интересный вариант:

plot_ly(df, lon = lon, lat = lat, text = hover, size = aggregate(df$pop,by=list(df$q),sqrt)$x, 
     #marker = list(size = sqrt(pop/10000) + 1, line = list(width = 0)), 
     color = q, colors= colors_wanted, type = 'scattergeo', locationmode = 'USA-states') %>% 
    layout(title = '2014 US city populations<br>(Click legend to toggle)', geo= g) 

enter image description here

+1

Привет, Спасибо! Это то, что я надеялся сделать. Еще раз спасибо за второе спасение (ранее с Choropleth Map). В случае, если вам любопытно, причина, по которой я хочу получить жесткий код, заключается в том, что я надеюсь использовать DBSCAN для поиска кластеризованных областей, а затем отобразить одну точку как более крупный и темный пузырь, чтобы увидеть, все ли кластерные точки подпадают под этот большой круг (так как вы также задали вопрос о кластеризации k-mean, я подумал, что было бы интересно также отметить это). – aselvendran

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

  • Нет связанных вопросов^_^