r - 在 UpSetR 中,如何在交叉栏上显示十进制数
问题描述
我正在为以下百分比数据制作一个不安图。这是我更复杂数据的一个虚拟示例。
x <- c(a=80, b=9.9, c=5, 'a&b'=0.1, 'a&c'=1.65, 'c&b'=3.35) 不安(fromExpression(x), order.by = "freq")
我希望这些百分比显示为十进制数字,并且所有条形都可见,即使它是 0.1%。所有数据在此图中都很重要。
解决方案
有两个事实阻碍了快速轻松地解决这个问题:
UpSetR
非常强烈地面向离散的可数对象集。
一个潜在的解决方案是使用小数对象而不是使用整个对象,但首先要做的upset()
是检查数据框中的哪些列具有"0"
它们"1"
的唯一级别。这是硬编码的。如果这失败了,startend
对象就变成NULL
了,并且函数将无法做任何事情。
UpSetR
不能很好地访问它创建的图。
绘制好图后,您将没有任何返回值 from upset()
。这意味着您不能修改绘图对象本身或更改它们在允许传递给的参数之外的绘图方式upset()
。
所以,你可以做什么?
- 根据您的真实情节的复杂程度(以及重新绘制它的频率),您可以这样做:
x <- c(a=80, b=9.9, c=5, 'a&b'=0.1, 'a&c'=1.65, 'c&b'=3.35)
upset(fromExpression(x*100), order.by = "freq")
然后在inkscape/illustrator中编辑。(坏的)
- 分叉
UpSetR
和劫持scale.intersections
andscale.sets
参数。在Make_main_bar()
函数中,您只需将其处理“百分比”参数scale_intersections
的方式更改为 ,并将Make_size_plot()
处理相同参数的方式更改为scale_sets
。这将变成:
x <- c(a=80, b=9.9, c=5, 'a&b'=0.1, 'a&c'=1.65, 'c&b'=3.35)
upset(fromExpression(x*100), order.by = "freq",
scale.intersections="percent", scale.sets="percent")
我个人UpSetR
出于其他目的分叉了自己,但是该包通常需要进行重大重构,以便可以将其应用于其他用例。作者可能想阻止在他们的概念之外使用该概念。
推荐阅读
- javascript - 数组大小限制 GLSL (WebGL)
- php - 无法使用 FPM/FastCGI 上传
- c# - DbCommandInterceptor 中的 EFCore 注入服务
- apache-spark - AWS Glue:数据是否偏斜?
- docker - Zookeeper pod 无法访问已安装的持久卷声明
- python - 敌人的血条不会耗尽 pygame
- python - 在python中对大量整数进行排序的最快方法是什么?
- ios - Github 操作:尽管已安装 xcpretty,但未找到
- angular - 带文件的角形
- java - 我可以在我的 Java 应用程序中使用 Neo4j BI 连接器吗?