2015-03-25 2 views
0

Я хочу исключить неиспользованное значение фактора от x-axis в разделе ggvis. У меня есть data.frameустранить неиспользованные значения факторов в ggvis Shiny

choices <- c("Value1", "Value2", 
       "Value3", "Value4", 
       "Value5", "Value6", 
       "Value7", "Value8", 
       "Value9", "Value10", 
       "Value11", "Value12") 

levele <- c("AT1","AT2","AT3","AT4","AT5","RT1","AT6","AT7","AT8","AT9","AT10","RT2") 

number_value1 <- sample(1:100,22) 
number_value2 <- sample(1:100,22) 

df1 <- data.frame(product = c(rep("Product1",12),rep("Product2",10)), name = c(choices,choices[1:10]), 
        short_name = c(levele,levele[1:10]),number = number_value1, number2 = number_value2) 

и когда я хочу, чтобы создать ggvis только с данными, основанными на Product2 я получаю

df1 %>% 
    dplyr::filter(product == "Product2") %>% 
    ggvis(x = ~short_name,y = ~number) %>% 
    layer_points(size := 120,fill = ~short_name) 

enter image description here

земля показывает также неиспользуемые значения коэффициентов. Я не хочу этого видеть, поэтому я использовал x = ~factor(short_name) для устранения этих неиспользуемых случаев.

df1 %>% 
    dplyr::filter(product == "Product2") %>% 
    ggvis(x = ~short_name,y = ~number) %>% 
    layer_points(size := 120,fill = ~short_name) 

enter image description here

====================================== ==============================
Так что все в порядке. Проблема в том, когда я хочу сделать то же самое в приложении Shiny, которое имеет возможность манипулировать осью. Есть 2 dataframes, в котором есть 2 Products с различным количеством name. Когда я меняю Product1 на Produt2 в Select Product раздел в результате У меня есть все факторы по оси х, также неиспользуемые факторы. Мой код: here. Если кто-нибудь знает, как правильно его реализовать?

+2

'droplevels', как правило, самый простой способ удалить неиспользуемые уровни факторов. Вы можете применить его к целому data.frame. Вы можете попробовать: 'df1%>% dplyr :: filter (product ==" Product2 ")%>% droplevels()%>% ...' –

ответ

1

Как указано в @docendo discimus, вы можете использовать капельки. Я разветвил ваш код и внесло изменения here

+0

, docendo discimus Хорошо, но в результате, когда я манипулирую 'Select' раздел, например когда я выбираю 'Value1'' Value2',' Value3' и 'Value4',' Value4' имеет красный цвет, но когда я нажимаю только 'V1' и' V4', 'V4' имеет оранжевый цвет как' V2' ранее. Как сохранить цвет каждого 'Value's? – Nicolabo

+0

Я не верю, что это возможно в 'ggvis'. Я попытался использовать «scale_nominal» («fill», c («AT1», «AT2», «AT3», «AT4», «AT5», «RT1», «AT6», «AT7», «AT8», «AT9 »,« AT10 »,« RT2 »), c (« зеленый »,« синий »,« фиолетовый »,« aliceblue »,« желтый »,« sienna »,« navy »,« orchid »,« maroon », linen "," gray "," khaki "))', чтобы присваивать значения цвета переменным, но затем неиспользуемые факторы снова появляются в легенде. Существует открытая проблема, связанная с этим на github https://github.com/rstudio/ggvis/issues/208 и связанный с этим вопрос здесь http://stackoverflow.com/questions/24810470/custom-fill-color-in- ggvis-и-другие-варианты – jentjr

0

Возможно. Нужно только создать новую реактивную переменную datasetInput() и изменить некоторые строки кода. Здесь my code.

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