Расстраивающий сюжет
library(UpSetR)
x <- c(a=80, b=9.9, c=5, 'a&b'=0.1, 'a&c'=1.65, 'c&b'=3.35)
upset(fromExpression(x), order.by = "freq", show.numbers = 'yes')
Ваш вопрос
Итак, вы хотите две вещи:
проценты для отображения в виде десятичных чисел
столбцы, видимые, даже если они равны 0,1%
Проценты для отображения в виде десятичных чисел
Вы начинаете с преобразования вашего вектора процентов в число (целое число) с fromExpression
.Таким образом, входные данные для upset
являются тогда фреймом данных:
library(UpSetR)
x <- c(a=80, b=9.9, c=5, 'a&b'=0.1, 'a&c'=1.65, 'c&b'=3.35)
str(fromExpression(x))
#> 'data.frame': 98 obs. of 3 variables:
#> $ a: num 1 1 1 1 1 1 1 1 1 1 ...
#> $ b: num 0 0 0 0 0 0 0 0 0 0 ...
#> $ c: num 0 0 0 0 0 0 0 0 0 0 ...
upset
, а затем внутренне получает метки из этих данных, поэтому ссылка на исходные проценты больше не присутствует внутри upset
.
Наличие меток в процентах или некоторых других пользовательских меток, похоже, не поддерживается на данный момент для функции upset
из пакета UpSetR
.
Существует *Аргумент 1036 *, но позволяет показывать только эти абсолютные частоты поверх столбцов (show.numbers = "yes"
или show.numbers = "Yes"
) или нет (любое другое значение для show.numbers
), здесь используется бит кода:
https://github.com/hms-dbmi/UpSetR/blob/fe2812c8cbe87af18c063dcee9941391c836e7b2/R/MainBar.R#L130-L132
Так что я думаю, что вам нужно изменить этот фрагмент кода, то есть geom_text
и aes_string
, чтобы использовать другое эстетическое отображение (ваши относительные частоты).Поэтому, возможно, попросите разработчика сделать это?
Бары видны, даже если они равны 0,1%
Что ж, в конечном итоге это зависит от вашего динамического диапазона по оси Y и размера вашего графика, т.е.если самый высокий столбец намного больше самого короткого, чем может быть невозможно увидеть оба на одном и том же графике (если вы не сделаете ось Y прерывистой).
Заключение
Я понимаю, что этона самом деле это не решение вашей проблемы, но это ответ, который, мы надеемся, укажет вам решение вашей проблемы.