首页 > 解决方案 > Pandas 多图线图看起来不对

问题描述

所以我的代码打开了一个数据文件,它有 3 列数据并且很长。使用熊猫,它看起来像:

               V     n             I
0       0.001350   1.0  2.905273e-06
1       0.002850   1.0  3.131104e-06
2       0.004350   1.0  3.378296e-06
3       0.005850   1.0  3.555298e-06
4       0.007350   1.0  3.833008e-06
...          ...   ...           ...
100103  0.173451  83.0 -7.324219e-09
100104  0.133451  83.0  3.662109e-09
100105  0.093451  83.0  7.324219e-09
100106  0.053451  83.0  9.765625e-09
100107  0.013451  83.0 -1.770020e-08

[100108 rows x 3 columns]

现在使用 n 作为标识符,我可以将它们分开并将它们完全绘制在图表上。我用 :

#open data file and read in data:
#data location
f =r'C:\Users\Z\Desktop\Projects\PHD\1st\ML\BurnMLScripts-master\data\Test Char\chip1\D8_12\_burn\000456_CE_16_burn_d20.dat'

#store data using pandas
data = pd.read_csv( f, sep = '\t', comment = '#', names = ['V','n','I'] )

#observe data format
print(data)

#plot data
fig=plt.figure
data= data.pivot(index = 'V', columns = 'n', values = 'I')
data.plot.line()
plt.legend(loc='best')
plt.show()

结果图看起来不像我想要的线图,它们的形状但不是实际的点对点线。一旦数据点达到最大点,它们就会在 x 域中循环返回,我想这就是问题所在,但我需要完整的跟踪,而不需要从底部到顶部绘制线条,它们之间的空间应该是空的.

奇怪的线条结构

关于如何纠正这个问题的任何想法?提前致谢!

标签: pythonpandas

解决方案


据我所知,我假设您想要一个分类线图,Vx 轴上有I变量,y 轴上有变量,每个n值都有一条单独的线。

我建议使用 seaborn 绘图库。

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

#Then you load your data...

data["n"] = data["n"].astype("category")

fig, ax = plt.subplots()
sns.lineplot(data=df, x="V", y="I", hue="n", ax=ax)

plt.show()

如您所见,无需旋转 DataFrame。

请注意,需要将 column 设置n为 categorical dtype,以便sns.lineplotn其视为不同的类别,而不是连续的数字。一般来说,我强烈推荐 Seaborn 用于这种可视化!


推荐阅读