Преобразуйте ImageSource в BitmapImage - WPF

Я боролся с той же проблемой раньше. Похоже, что ggplot складывает столбцы в зависимости от их появления в кадре данных. Таким образом, решение вашей проблемы состоит в сортировке данных по коэффициенту заполнения в обратном порядке, в котором вы хотите, чтобы они отображались в легенде: нижний элемент в верхней части информационного кадра и верхний элемент в нижней части:

ggplot(ts[order(ts$y, decreasing = T),],
       aes(z, x, fill=factor(y, levels=c("blue","white" )))) + 
  geom_bar(stat = "identity")

enter image description here

Редактировать: Больше иллюстраций

Используя образцы данных, я создал три графика с разным порядком данных в кадре, я подумал, что больше заполнения переменные сделают вещи немного понятнее.

set.seed(123)
library(gridExtra)
df <- data.frame(x=rep(c(1,2),each=5),
                 fill_var=rep(LETTERS[1:5], 2),
                 y=1)
#original order   
p1 <- ggplot(df, aes(x=x,y=y,fill=fill_var))+
  geom_bar(stat="identity") + labs(title="Original dataframe")


#random order
p2 <- ggplot(df[sample(1:10),],aes(x=x,y=y,fill=fill_var))+
  geom_bar(stat="identity") + labs(title="Random order")
#legend checks out, sequence wird

#reverse order
p3 <- ggplot(df[order(df$fill_var,decreasing=T),],
             aes(x=x,y=y,fill=fill_var))+
  geom_bar(stat="identity") + labs(title="Reverse sort by fill")

plots <- list(p1,p2,p3)

do.call(grid.arrange,plots)

enter image description here

12
задан Dave Clemmer 31 July 2011 в 00:35
поделиться

1 ответ

Тип BitmapImage наследует BitmapSource и, наконец, ImageSource (оба являются абстрактными классами). Вам нужно проверить фактический тип вашего объекта, то есть проверить object.GetType (). Name . Если вам повезет, он может фактически вернуть объект BitmapSource , и вам просто нужно будет привести его к этому типу, прежде чем вы сможете использовать его как таковой.

4
ответ дан 2 December 2019 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: