使用WinPython 3.4和matplotlib 1.3.1,我正在从mysql数据库中提取数据框。从查询中获得的原始数据框如下所示:
我需要的是将波长和强度分别绘制在x和y轴上,每个不同的晶片号码作为自己的系列。我需要保留x_coord和y_coord变量,以便我可以稍后通过单击它们并将它们添加到列表来识别突出数据点。在绘制这些图表后,我会让这些功能正常工作。
我认为使用内置数据框绘图功能需要执行透视表方法。
在我的数据框上,然后将数据框转换为:
我尝试将数据框重新索引到默认索引,但仍然显示“DataFrame”对象没有“wavelength”属性的结果。
必须有更好的方法,可以通过内置的数据框绘图功能重新排列数据框以使其成为可能,或者绘制仅选择某些列与其他列(列是动态的)。 明显我是Python和Pandas的新手,但我已经花费了几天的时间以不同的方式尝试做到这一点,却毫无结果。 如有任何帮助,将不胜感激。 谢谢。
wafer_number test_type test_pass x_coord y_coord test_el_id wavelength intensity
0 HT2731 T2 1 38 54 24 288.68 4413
1 HT2731 T2 1 40 54 25 257.42 2595
2 HT2731 T2 1 50 54 28 300.00 2836
3 HT2731 T2 1 52 54 29 300.00 2862
4 HT2731 T2 1 54 54 30 300.00 3145
5 HT2731 T2 1 56 54 31 300.00 2804
6 HT2731 T2 1 58 54 32 255.69 2803
7 HT2731 T2 1 59 54 33 257.23 2991
8 HT2731 T2 1 60 54 34 262.45 3946
9 HT2731 T2 1 62 54 35 291.84 9398
10 HT2801 T2 1 38 55 54 288.68 4125
11 HT2801 T2 1 38 56 55 265.25 4258
我需要的是将波长和强度分别绘制在x和y轴上,每个不同的晶片号码作为自己的系列。我需要保留x_coord和y_coord变量,以便我可以稍后通过单击它们并将它们添加到列表来识别突出数据点。在绘制这些图表后,我会让这些功能正常工作。
我认为使用内置数据框绘图功能需要执行透视表方法。
wl_vs_int = results.pivot_table(values='intensity', rows=['x_coord', 'y_coord','wavelength'], cols='wafer_number')
在我的数据框上,然后将数据框转换为:
wafer_number HT2478 HT2625 HT2644 HT2671 HT2673 HT2719 HT2731 HT2796 HT2801
x_coord y_coord wavelength
27 35 289.07 NaN NaN NaN 5137 NaN NaN NaN NaN NaN
36 250.88 4585 NaN NaN NaN NaN NaN NaN NaN NaN
37 260.90 NaN NaN NaN NaN 4270 NaN NaN NaN NaN
38 288.87 NaN NaN NaN 8191 NaN NaN NaN NaN NaN
40 259.74 NaN NaN NaN NaN 17027 NaN NaN NaN NaN
41 259.74 NaN NaN NaN NaN 18742 NaN NaN NaN NaN
42 259.74 NaN NaN NaN NaN 34098 NaN NaN NaN NaN
28 34 268.27 NaN NaN NaN NaN 2080 NaN NaN NaN NaN
38 257.42 7727 NaN NaN NaN NaN NaN NaN NaN NaN
44 260.13 NaN NaN NaN NaN 55329 NaN NaN NaN NaN
但现在索引是x、y坐标和波长的多重索引,因此当我尝试打印wl vs列时,
plt.scatter(wl_vs_int.wavelength, wl_vs_int.columns)
我遇到了 AttributeError 错误:
AttributeError: 'DataFrame' object has no attribute 'wavelength'
我尝试将数据框重新索引到默认索引,但仍然显示“DataFrame”对象没有“wavelength”属性的结果。
必须有更好的方法,可以通过内置的数据框绘图功能重新排列数据框以使其成为可能,或者绘制仅选择某些列与其他列(列是动态的)。 明显我是Python和Pandas的新手,但我已经花费了几天的时间以不同的方式尝试做到这一点,却毫无结果。 如有任何帮助,将不胜感激。 谢谢。