python - 使用 pd.DataFrames python 绘制 2d contourf 和 3d 数据时遇到问题
问题描述
我目前正在尝试生成我所做的实验的数据,其中涉及 xy 扫描文件,然后将它们绘制为时间的函数。我设法将它们放入形状为 (1027,281) 的 pandas DataFrame 中,x 轴作为索引,时间作为列标签,扫描的值作为 df 中的值。等高线图如下所示。
y = dftest.index.values
x = dftest.columns.values
z = dftest.values
X,Y = np.meshgrid(x,y)
z2 = np.ma.array(z)
z2_masked = np.ma.masked_where(z2 > 300, z2)
z2_masked = np.ma.masked_where(z2_masked < -5, z2_masked)
z3 = np.ma.filled(z2_masked, fill_value = 0)
plt.contourf(X, Y ,z3, 20, cmap = 'jet')
plt.colorbar()
plt.xlim(xmax = 175000)
plt.xticks(np.arange(0, 175000, step=50000))
时间分辨 PXRD,x 轴 = 时间,y = 衍射角:
首先,这会产生一些错误的东西,我希望扫描文件的 x 值是 x 轴,但它是 y 轴。然后我想找到一种将其绘制为 3d 等高线图或曲面的简单方法。我认为我的问题在于数据的形状,但我不确定如何纠正它。
我的每个 DataFrame 看起来像这样:
0.0 646.0 ... 181742.0 182390.0
x ...
0.996522 7.301625 3.914700 ... 8.224773 9.885618
1.000432 10.722788 7.379380 ... 8.474020 19.229299
1.004341 0.079724 5.567879 ... -0.143427 2.684953
1.008251 4.738650 3.903460 ... -1.162278 3.809588
1.012161 6.213206 -0.318955 ... 4.050190 1.454264
... ... ... ... ...
4.992126 -2.956039 -4.475446 ... -2.816053 -4.556231
4.996036 -1.105434 1.274342 ... -1.393612 -4.338330
4.999945 -0.536215 2.073975 ... -2.727332 -1.083154
5.003855 5.983973 6.983155 ... 1.188320 3.657221
5.007765 -3.638785 -1.548692 ... -5.225328 -2.164280
[1027 rows x 281 columns]
解决方案
要生成等高线图(为简单起见忽略掩蔽),这不起作用吗?
x = dftest.index.values
y = dftest.columns.values
z = dftest.values
X,Y = np.meshgrid(x,y)
Z = z.T
plt.contourf(X,Y,Z,20,cmap='jet')
plt.colorbar()
plt.show()
推荐阅读
- distributed - 如何构建多服务器联合学习?
- c# - 消费者接收多条消息
- angular11 - 除非单击 ng-select,否则不会刷新 Angular ng-select 值
- magento2 - magento 中的索引不起作用。该怎么办?
- python - 如何使用 matplotlib 在双 y 刻度条形图/绘图中从对数刻度旋转 y 刻度标签?
- python - 如何从给定的 URL 读取元数据并将其保存为带有 key_value 对的 json 文件?
- google-apps-script - 谷歌表格的谷歌应用脚本中的总和
- r - 每日时间序列的功率谱
- windows - 从 psql.exe 执行 SQL 文件后列中的字符错误
- kotlin - Gradle 从 4 升级到 7,模块之间共享测试