假设我有一个简单的数据框要绘制,我必须在其中着色与列中包含的度量相关的点。所以,如果我有:
dataset
我用以下方式使用ggplot:
shinyServer( function(input, output, session) {
dataset_list <- list( "rock" = rock,
"pressure" = pressure,
"cars" = cars
)
observeEvent( input$n_select_input, {
selected_dataset <- reactive({
selected_list <- list()
for( i in 1:input$n_select_input ){
selected_list[[i]] <- dataset_list[[i]]
}
names(selected_list) <- names( dataset_list )[1:input$n_select_input]
selected_list
})
colname_indata_list <- reactive({
colname.indata.list <- list()
for( set in names( selected_dataset() ) ){
colname.indata.list[[set]] <- colnames( selected_dataset()[[set]] )
}
colname.indata.list
})
choice_cand <- reactive({
names(selected_dataset()) })
updateSelectInput( session,
"dataset",
choices = as.character( choice_cand() )
)
######################################Start: Modified#############################
observe({
input$dataset ##Added so that this observe is called when the input$dataset changes
choices_cand <- reactive({
colname_indata_list()[[input$dataset]] })
updateCheckboxGroupInput( session,
"column",
choices = as.character( choices_cand()) ,
selected = as.character( choices_cand())
)
})
})
######################################End: Modified#############################
datasetInput <- reactive({
switch(input$dataset,
"rock" = rock,
"pressure" = pressure,
"cars" = cars)
})
output$table <- renderTable({
datasetInput()[,input$column]##only selected columns are displayed
})
} )
这是一个可能的代表。
无论如何,假设我希望颜色这样的点代表列dataframe
# X1 X2 pop
# 1 -0.11092652 -1.955598e-09 448053
# 2 -0.09999865 -2.310067e-10 418231
# 3 -0.05944755 -3.475013e-09 448473
# 4 0.51378848 1.631781e-09 119548
# 5 0.09438223 -9.606475e-10 323288
# 6 0.19349045 6.074025e-10 203153
# 7 0.06685609 3.210156e-10 208339
# 8 -0.10915456 -1.407190e-09 429178
# 9 -0.10348100 -1.401948e-09 1218038
# 10 -0.08607617 -7.356602e-10 383018
# 11 1.00343465 -2.423237e-08 209550
# 12 -0.05839148 1.503955e-09 287042
# 13 -0.09960163 2.167945e-10 973129
# 14 -0.05793417 2.510107e-09 187249
# 15 0.02191610 2.479708e-09 915225
# 16 0.48877872 1.338346e-08 462999
# 17 -0.10289556 1.472368e-09 1108776
# 18 -0.10316414 2.933469e-10 402422
# 19 -0.09545279 -2.926035e-10 274035
# 20 -0.06111044 3.464014e-09 230749
,即具有来自(例如)浅橙色的颜色,通过暗红色然后黑色。如何“缩放”列ggplot(dataframe) +
ggtitle("Somehow useful spatialization")+ # Electricity / Gas
geom_point(aes(dataframe$X1, dataframe$X2), color = dataframe$pop, size=2 ) +
theme_classic(base_size = 16) +
guides(colour = guide_legend(override.aes = list(size=4)))+
xlab("X")+ylab("Y")
以获取此类图形?
编辑:
pop
答案 0 :(得分:2)
使用ggplot,你可以在你的初始ggplot调用中添加你的美学(aes)。由于您已经告诉数据所在的ggplot(在dataframe
中),您可以直接通过名称引用变量(不使用dataframe$
)。现在,要将颜色作为比例,需要在aes()
调用中将其称为审美,而不是静态值。一旦将其作为美学添加,我们可以通过添加scale
来自定义它的反应方式。考虑到这一切,我们得到以下代码:
ggplot(dataframe, aes(x = X1, y = X2, color = pop)) +
ggtitle("Somehow useful spatialization")+ # Electricity / Gas
geom_point(size=2) +
theme_classic(base_size = 16) +
guides(colour = guide_legend(override.aes = list(size=4))) +
xlab("X")+ylab("Y") +
scale_color_gradient2(low = "green", mid = "red", high = "black", midpoint = mean(dataframe$pop))
此代码提供以下图表。可以通过使用scale_color_gradient2
部分来进一步调整颜色。 (为什么绿色为low
提供了比实际选择橙色更好的橙色,因为low
颜色超出了我的范围,我只是巧合地在那里结束了)