【问题标题】:How can I draw 3-d plot with this dataframe如何使用此数据框绘制 3-d 图
【发布时间】:2020-06-22 14:33:30
【问题描述】:

我编辑了问题:

我的数据是这样的

       m/z    300  301  302  303  …  1249
Rt
7.01            0    0    0   2.34 …  0 
7.23            0    19.29 0  0    …  0     
7.34            2.43 0    0   0    …  2.34 
7.46            0    10.32 2.31 0  …  0
.
.
33.1314            0     0    24242.23 0  0  

我想绘制 3d 图,其中 x = m/z(300 到 1249)y= R/t(7.01 到 33.1314)和 z = 表中不为 0 的值(强度),z 为高度在 3d 绘图上。

【问题讨论】:

  • 查看plt.contourf 以从原始数据中绘图。此外,为了重塑数据,stack() 并过滤非零值。

标签: python r pandas reshape


【解决方案1】:

试试这个

import pandas as pd

df = pd.DataFrame(
    data=[[300, 7.0034],
          [300, 10.232],
          [0, 999.9],
          [301, 7.00023],
          [301, 7.00046]],
    columns=['wavelength', 'm/z'],
)
non_zero_df = df[df.wavelength!=0]

使用matplotlib

import matplotlib.pyplot as plt

plt.scatter(non_zero_df['wavelength'], non_zero_df['m/z'])
plt.show()

使用plotly

import plotly_express as px

px.scatter(non_zero_df, x='wavelength', y='m/z')

【讨论】:

    【解决方案2】:

    R中的一个解决方案。

    假设您的数据如下所示(仅显示m/z 的前两位数字):

    > df
    # A tibble: 5 x 6
      `m/z` `300` `301`    `302` `303` `1249`
      <dbl> <dbl> <dbl>    <dbl> <dbl>  <dbl>
    1  7.00  0      0       0     2.34   0   
    2  8.00  0     19.3     0     0      0   
    3  9.00  2.43   0       0     0      2.34
    4 10.0   0     10.3     2.31  0      0   
    5 33.1   0      0   24242.    0      0 
    

    我们可以使用dplyrtidyr

    df %>%
      pivot_longer(cols=matches("\\d+"), names_to="x", names_transform=list(x = as.integer)) %>%
      group_by(`m/z`) %>%
      filter(value != 0) %>%
      slice_min(x)
    

    获得

    # A tibble: 5 x 3
    # Groups:   m/z [5]
      `m/z`     x    value
      <dbl> <int>    <dbl>
    1  7.00   303     2.34
    2  8.00   301    19.3 
    3  9.00   300     2.43
    4 10.0    301    10.3 
    5 33.1    302 24242. 
    

    接下来我们使用ggplot2 来获取散点图:

    ggplot(df2, aes(x=x, y=`m/z`, color=value)) + 
      geom_point()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-12
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 2020-03-22
      • 1970-01-01
      相关资源
      最近更新 更多