在 ggplot 中使用 log10_trans() 时出错
An error when using log10_trans() in ggplot
我有一个包含三列的数据框 testlist
:“Time Point
”、“G1
”和“G2
”
我 运行 这条 ggplot 线,y 轴为“Time point
”。
testplot <- ggplot(testlist, aes_string(x = "G1", y = "`Time Point`")) +
geom_density_ridges_gradient()+
scale_x_continuous(trans = log10_trans(),#,
limits = c(10^1,10^4),
breaks = trans_breaks("log10", function(x) 10^x,n = 2))
使用 G1,它 运行s 并绘制我的数据。但是,对于 G2,我收到此错误:
Error in if (!(lo <- min(hi, IQR(x)/1.34))) (lo <- hi) || (lo <- abs(x[1L])) || :
missing value where TRUE/FALSE needed
数据集G1和G2都是70500左右的连续点,唯一不同的是范围:
G1: -16.34 to 54454
G2: -131.25 to 4675
我认为这与对负数应用变换有关,但两组都有负数。无论是否绘制,我也会收到此警告消息:
In addition: Warning messages:
1: In self$trans$transform(x) : NaNs produced
2: Transformation introduced infinite values in continuous x-axis
如有任何帮助,我们将不胜感激。
EDIT1:我无法举一个最小的例子。
我将尝试使用示例进行另一次编辑。
EDIT2:这是 CSV 文件的 link:CSV file
- 有'Time point'作为y,PEA作为x显示错误; PIA as x 绘制数据图表。
EDIT3:日志函数在数据框中生成 -inf 值,ggplot 不会使用这些值。我会更新 post 最终会做什么。
失败的区别在于一个包含零而另一个不包含零。取负数对数的 NaN 在密度图函数中被移除,但对数为零的 -inf 不是。 ggridges
层失败是因为它使用标准差来设置带宽,而向量包含-inf时的标准差为NaN。如果您想使用对数转换,没有理由不删除 negatives/zeros,但如果您将参数 from
和 bandwidth
输入 ggridges
,则可以保持原样geom.
我有一个包含三列的数据框 testlist
:“Time Point
”、“G1
”和“G2
”
我 运行 这条 ggplot 线,y 轴为“Time point
”。
testplot <- ggplot(testlist, aes_string(x = "G1", y = "`Time Point`")) +
geom_density_ridges_gradient()+
scale_x_continuous(trans = log10_trans(),#,
limits = c(10^1,10^4),
breaks = trans_breaks("log10", function(x) 10^x,n = 2))
使用 G1,它 运行s 并绘制我的数据。但是,对于 G2,我收到此错误:
Error in if (!(lo <- min(hi, IQR(x)/1.34))) (lo <- hi) || (lo <- abs(x[1L])) || :
missing value where TRUE/FALSE needed
数据集G1和G2都是70500左右的连续点,唯一不同的是范围:
G1: -16.34 to 54454
G2: -131.25 to 4675
我认为这与对负数应用变换有关,但两组都有负数。无论是否绘制,我也会收到此警告消息:
In addition: Warning messages:
1: In self$trans$transform(x) : NaNs produced
2: Transformation introduced infinite values in continuous x-axis
如有任何帮助,我们将不胜感激。
EDIT1:我无法举一个最小的例子。 我将尝试使用示例进行另一次编辑。
EDIT2:这是 CSV 文件的 link:CSV file
- 有'Time point'作为y,PEA作为x显示错误; PIA as x 绘制数据图表。
EDIT3:日志函数在数据框中生成 -inf 值,ggplot 不会使用这些值。我会更新 post 最终会做什么。
失败的区别在于一个包含零而另一个不包含零。取负数对数的 NaN 在密度图函数中被移除,但对数为零的 -inf 不是。 ggridges
层失败是因为它使用标准差来设置带宽,而向量包含-inf时的标准差为NaN。如果您想使用对数转换,没有理由不删除 negatives/zeros,但如果您将参数 from
和 bandwidth
输入 ggridges
,则可以保持原样geom.