python - 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 域中循环返回,我想这就是问题所在,但我需要完整的跟踪,而不需要从底部到顶部绘制线条,它们之间的空间应该是空的.
关于如何纠正这个问题的任何想法?提前致谢!
解决方案
据我所知,我假设您想要一个分类线图,V
x 轴上有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.lineplot
将n
其视为不同的类别,而不是连续的数字。一般来说,我强烈推荐 Seaborn 用于这种可视化!
推荐阅读
- r - 运行 R 代码时出现错误:数组没有“dimnames”属性
- android - 即使已授予权限,也无法在外部存储上读/写
- python - 强制两个系列具有匹配的索引
- php - 调度运行时无法调度 Laravel 事件
- windows - 通过批处理文件从注册表中获取值,并与其他子文件夹比较该值是否存在并进行导出
- snowflake-cloud-data-platform - 变体表中的横向展平雪花
- angular - Angular 在放置数据时两次发送相同的请求
- html - 不使用相对位置或负边距的图像上的文本
- python - 姜戈芹菜节拍
- python - 我的 Choropleth 地图加载卡住并且永远无法完成?