- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有没有可能得到类似this plot的东西
从 pandas 数据帧,以类似于我只是简单地做二维绘图的方式 (df.plot()
)?
我有从 csv 文件读取到具有以下结构的 pandas DataFrame 的数据:
1st level header A B C D E F
2nd level header 2.0 1.0 0.2 0.4 0.6 0.8
Index
126.4348 -467048 -814795 301388 298430 -187654 -1903170
126.4310 -468329 -810060 304366 305343 -192035 -1881625
126.4272 -469209 -804697 305795 312472 -197013 -1854848
126.4234 -469685 -799604 305647 318936 -200957 -1827665
126.4195 -469795 -795708 304101 323922 -202192 -1805153
126.4157 -469610 -793795 301497 326780 -199323 -1791743
126.4119 -469213 -794362 298257 327092 -191547 -1790418
126.4081 -468687 -797499 294817 324717 -178875 -1802122
126.4043 -468097 -802853 291546 319800 -162225 -1825540
126.4005 -467486 -809663 288700 312745 -143334 -1857270
126.3967 -466863 -816878 286401 304170 -124505 -1892389
126.3929 -466210 -823335 284645 294827 -108228 -1925312
126.3890 -465485 -827966 283331 285520 -96733 -1950795
126.3852 -464637 -829997 282315 277018 -91559 -1964894
126.3814 -463617 -829104 281457 269965 -93242 -1965702
126.3776 -462399 -825487 280670 264824 -101170 -1953728
126.3738 -460982 -819857 279942 261819 -113660 -1931820
126.3700 -459408 -813317 279344 260927 -128242 -1904669
126.3662 -457757 -807177 279009 261885 -142112 -1877955
126.3624 -456143 -802715 279090 264233 -152667 -1857303
126.3585 -454700 -800940 279722 267380 -158023 -1847241
126.3547 -453566 -802397 280969 270692 -157406 -1850358
126.3509 -452862 -807050 282792 273579 -151350 -1866803
126.3471 -452672 -814262 285033 275591 -141627 -1894249
126.3433 -453030 -822898 287426 276486 -130942 -1928303
126.3395 -453910 -831501 289627 276273 -122426 -1963297
126.3357 -455223 -838544 291266 275222 -119021 -1993312
126.3319 -456834 -842695 292004 273824 -122882 -2013246
126.3280 -458571 -843048 291599 272725 -134907 -2019718
126.3242 -460252 -839292 289952 272620 -154497 -2011656
... ... ... ... ... ... ...
我想根据索引绘制这些列中的每一列(它们是 NMR 光谱)。在 2D 叠加层中,这是围绕 matplotlib 的 pandas 包装器的简单用法。但是,我想沿着具有二级标题的第三轴将每个频谱绘制在自己的“线”中蜱虫。我尝试使用 matplotlib 的 3D 绘图功能,但它似乎只适用于实际拥有三个长度相等的数组的情况,就我的数据而言,这是没有意义的,因为每个光谱都是为二级标题中的一个值记录的。
当我尝试制作 3D 绘图时,我是不是想得太复杂了?
我希望我的绘图看起来可能不是真正的 3D 绘图,而是一些特殊版本的叠加 2D 绘图吗?
奖励积分:
如果没有明显的 python 方法来做到这一点,我也会对可以做同样事情的其他语言的库感到高兴,例如R 或 Octave 。我只是不太熟悉这些,所以我可能无法在这些语言中采用更多 hacky 解决方案来满足我的要求。
This question 可能非常相似,但据我了解,它不一定扩展到 python 以外的软件,也没有结果应该是什么样子的示例,所以我不确定是否可以回答这个问题实际上可能对这个特定目的有帮助。
正如 lanery 所指出的,matplotlib 库中的 polygon3D 非常接近我的期望。然而,它有一些缺点,其中一些是大多数科学出版物所不能接受的:
[0,1,1.7,2.5,6.2]
,用于第三维,即第二维在这种情况下,水平标题,2d 图有非常不同的距离来自另一个,这是 Not Acceptable ,至少对任何人来说阅读出版物的非编程观众最佳答案
我给了您一个示例,该示例使用连续 X 和 Y 中的数据进行绘图,并且只是根据您的二级标题对 z 进行硬编码。
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib
%matplotlib inline
df = pd.read_csv("C:\Users\User\SkyDrive\Documents\import_data.tcsv.txt",header=None)
fig = plt.figure()
ax = fig.gca(projection='3d')
# Plot a sin curve using the x and y axes.
x = df[0]
ax.plot(x, df[1], zs=2, zdir='z', label='A')
ax.plot(x, df[2], zs=1, zdir='z', label='B')
ax.plot(x, df[3], zs=0.2, zdir='z', label='C')
ax.plot(x, df[4], zs=0.4, zdir='z', label='D')
ax.plot(x, df[5], zs=0.6, zdir='z', label='E')
ax.plot(x, df[6], zs=0.8, zdir='z', label='F')
# Customize the view angle so it's easier to see that the scatter points lie
# on the plane y=0
ax.view_init(elev=-150., azim=40)
plt.show()
您将不得不使用 view_init 上的选项来旋转并获得您想要的轴。我不太清楚你的最终目标是什么,但这是最终情节。
关于python - 绘制具有不同阵列长度的 3D Pandas 数据帧的光谱数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37336342/
使用 Redshift 光谱时,您似乎只能导入提供位置直到文件夹的数据,并且导入文件夹内的所有文件。 有没有办法从包含多个文件的文件夹中导入仅导入一个文件。当提供带有 filename 的完整路径时,
我正在评估 Athena 和 Redshift Spectrum。两者都有相同的目的,Spectrum 需要一个 Redshift 集群,而 Athena 是纯粹的无服务器集群。 Athena 使用
我们目前生成每日 CSV 导出,并将其上传到 S3 存储桶,结构如下: |--reportDate- |-- part0.csv.gz |-- part1.csv.gz 我们希望能够
我在 S3 中有一个 JSON 结构数组,它已被 Glue 成功抓取和编目。 [{"key":"value"}, {"key":"value"}] 我正在使用自定义分类器: $[*] 然而,当尝试从
我是一名优秀的程序员,十分优秀!