R plot_ly 绘制由于从列表中提取错误行而导致的缺失值
R plot_ly plots missing values due to wrong rows extraction from a list
我有以下数据:
> data
Type value
1 aromatics.aromatics 0.974489796
2 aromatics.charged 0.005102041
3 aromatics.polar 0.005102041
4 aromatics.unpolar 0.015306122
5 charged.aromatics 0.008620690
6 charged.charged 0.982758621
7 charged.polar 0.006465517
8 charged.unpolar 0.002155172
9 polar.aromatics 0.000000000
10 polar.charged 0.008403361
11 polar.polar 0.983193277
12 polar.unpolar 0.008403361
13 unpolar.aromatics 0.005532503
14 unpolar.charged 0.000000000
15 unpolar.polar 0.011065007
16 unpolar.unpolar 0.983402490
> typeof(data)
[1] "list"
# I keep only some rows of the data :
rows <- c(2,3,4,7,8,12)
data.2 <- data[rows,]
# result
> data.2
Type value
2 aromatics.charged 0.005102041
3 aromatics.polar 0.005102041
4 aromatics.unpolar 0.015306122
7 charged.polar 0.006465517
8 charged.unpolar 0.002155172
12 polar.unpolar 0.008403361
我想用 plot_ly 制作条形图 data.2
问题是这段代码:
plot_ly() %>%
add_bars(x = data.2[,1], y = data.2[,2])
用主线的所有线设置 x 轴 data
(见图)。
确实如此:
# data.2[,1] is :
[1] aromatics.charged aromatics.polar aromatics.unpolar charged.polar charged.unpolar polar.unpolar
16 Levels: aromatics.aromatics aromatics.charged aromatics.polar aromatics.unpolar charged.aromatics ... unpolar.unpolar``
# while data.2[,2] is :
[1] 0.005102041 0.005102041 0.015306122 0.006465517 0.002155172 0.008403361
所以我想我提取线条的方法是错误的,因为所有级别都被占用了......我该如何更正这个问题?请注意,使用 ggplot2.
时不会发生此问题
备注:我还使用 add_markers()
函数绘制补充数据(不同的值,但相同的 x 水平),它也有同样的问题。
或许在您的 Type 变量中删除未使用的级别可能会解决您的问题。
所以尝试:
data.2$Type <- droplevels(data.2$Type)
找到了:
droplevels(data.2)
傻我
我有以下数据:
> data
Type value
1 aromatics.aromatics 0.974489796
2 aromatics.charged 0.005102041
3 aromatics.polar 0.005102041
4 aromatics.unpolar 0.015306122
5 charged.aromatics 0.008620690
6 charged.charged 0.982758621
7 charged.polar 0.006465517
8 charged.unpolar 0.002155172
9 polar.aromatics 0.000000000
10 polar.charged 0.008403361
11 polar.polar 0.983193277
12 polar.unpolar 0.008403361
13 unpolar.aromatics 0.005532503
14 unpolar.charged 0.000000000
15 unpolar.polar 0.011065007
16 unpolar.unpolar 0.983402490
> typeof(data)
[1] "list"
# I keep only some rows of the data :
rows <- c(2,3,4,7,8,12)
data.2 <- data[rows,]
# result
> data.2
Type value
2 aromatics.charged 0.005102041
3 aromatics.polar 0.005102041
4 aromatics.unpolar 0.015306122
7 charged.polar 0.006465517
8 charged.unpolar 0.002155172
12 polar.unpolar 0.008403361
我想用 plot_ly 制作条形图 data.2
问题是这段代码:
plot_ly() %>%
add_bars(x = data.2[,1], y = data.2[,2])
用主线的所有线设置 x 轴 data
(见图)。
确实如此:
# data.2[,1] is :
[1] aromatics.charged aromatics.polar aromatics.unpolar charged.polar charged.unpolar polar.unpolar
16 Levels: aromatics.aromatics aromatics.charged aromatics.polar aromatics.unpolar charged.aromatics ... unpolar.unpolar``
# while data.2[,2] is :
[1] 0.005102041 0.005102041 0.015306122 0.006465517 0.002155172 0.008403361
所以我想我提取线条的方法是错误的,因为所有级别都被占用了......我该如何更正这个问题?请注意,使用 ggplot2.
备注:我还使用 add_markers()
函数绘制补充数据(不同的值,但相同的 x 水平),它也有同样的问题。
或许在您的 Type 变量中删除未使用的级别可能会解决您的问题。
所以尝试:
data.2$Type <- droplevels(data.2$Type)
找到了:
droplevels(data.2)
傻我