python-3.x - Pandas 的seaborn tsplot问题

标签 python-3.x pandas seaborn

我正在尝试一些非常简单的事情,我确信这个错误很愚蠢,所以提前道歉。

完整代码如下:

import pandas as pd
import numpy as np 
import seaborn as sns
import matplotlib.pyplot as plt

CrizWT = 134.2
CrizWT2 = 199.4

df = pd.DataFrame(columns = ('IC50', 'Cell line', 'Drug', 'Time point'))

df = df.append(pd.DataFrame([ [(4673/CrizWT), 'line 2', 'Criz', 1], \
                              [(919/CrizWT), 'line 2', 'Criz', 3], \
                              [(975.5/CrizWT), 'line 2', 'Criz', 7], \
                              [(164.2/CrizWT), 'line 2', 'Criz', 14], \
                              [(126.8/CrizWT), 'line 2', 'Criz', 21], \
                              [(2474/CrizWT), 'line 8', 'Criz', 1], \
                              [(565.8/CrizWT), 'line 8', 'Criz', 7], \
                              [(1368/CrizWT), 'line 8', 'Criz', 14], \
                              [(299.1/CrizWT), 'line 8', 'Criz', 21], \
                              [(395.5/CrizWT2), 'line 1', 'Criz', 1], \
                              [(2071/CrizWT2), 'line 1', 'Criz', 3], \
                              [(338.4/CrizWT2), 'line 1', 'Criz', 7], \
                              [(322.8/CrizWT2), 'line 1', 'Criz', 14], \
                              [(259.9/CrizWT2), 'line 1', 'Criz', 21], \
                              [(483.1/CrizWT2), 'line 3', 'Criz', 1], \
                              [(539.6/CrizWT2), 'line 3', 'Criz', 3], \
                              [(231.3/CrizWT2), 'line 3', 'Criz', 7], \
                              [(215.5/CrizWT2), 'line 3', 'Criz', 14], \
                              [(291.5/CrizWT2), 'line 3', 'Criz', 21]], \
                              columns = ('IC50', 'Cell line', 'Drug', 'Time point')))

print(df)
sns.tsplot(time = 'Time point', value = 'IC50', condition = 'Cell line', data = df)
plt.show()

当我打印数据框时,它看起来很好:

         IC50 Cell line  Drug  Time point
0   34.821162    line 2  Criz           1
1    6.847988    line 2  Criz           3
2    7.269001    line 2  Criz           7
3    1.223547    line 2  Criz          14
4    0.944858    line 2  Criz          21
5   18.435171    line 8  Criz           1
6    4.216095    line 8  Criz           7
7   10.193741    line 8  Criz          14
8    2.228763    line 8  Criz          21
9    1.983450    line 1  Criz           1
10  10.386158    line 1  Criz           3
11   1.697091    line 1  Criz           7
12   1.618857    line 1  Criz          14
13   1.303410    line 1  Criz          21
14   2.422768    line 3  Criz           1
15   2.706118    line 3  Criz           3
16   1.159980    line 3  Criz           7
17   1.080742    line 3  Criz          14
18   1.461886    line 3  Criz          21

但是seaborn tsplot 是空的! (轴标记正确,但没有绘图)。

想法?

pandas/seaborn 学习曲线仍在继续。

最佳答案

我不是seaborn专家,但我发现您的数据有两个问题:

  1. 您在 5 个时间点采样数据,但您的数据中有 19 行 数据框。 第 8 行时间点 = 3 的测量缺失

  2. Seaborn 的 tsplot 旨在显示不确定性,因此我相信您应该在您的代码中使用参数 unit,而不是 condition sns.tsplot().

纠正这些问题后,您将得到一个格式良好的绘图,如下所示:

dx = pd.concat([df,
pd.DataFrame({'IC50':10.386158,'Cell line':'line 8','Drug':'Criz','Time point':3.0}, index=[19])], axis=0)
sns.tsplot(data = dx, time = 'Time point', value = 'IC50', unit="Cell line");

enter image description here

关于python-3.x - Pandas 的seaborn tsplot问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36381825/

相关文章:

matplotlib - Seaborn:如何在累积 KDE 中绘制与特定 y 值匹配的垂直线?

python - 更改 Seaborn 散点图中的图例位置和标签

python - 元编程 - 使用 __class__ 时如何从模板生成类?

python - 在 pandas 数据框列上使用 rsplit 根据分隔符的第二个实例进行分隔

python - 这个语法在Python中是什么意思? def json_file_to_dict(_file : str) -> dict:?

Python - 字符串中的 "case insensitive"或 "case ignore"

python - PyVisa 读取超时

python - 如何在 Pandas 中一次计算均值和标准差?

pandas - 添加一列,该列是 pandas 中连续行的差异结果

python - 第一行和最后一行将热图图切成两半