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)

傻我