如何生成从Excel电子表格读取数据的极坐标轮廓图?

时间:2018-12-10 04:22:42

标签: excel python-3.x matplotlib contour polar-coordinates

我目前正在一家公司里做实习计划,我的教育背景实际上是石油地球科学,与编程无关。因此,对于我已犯或将要犯的任何错误,我深表歉意。

我的主管要求我像下面的示例一样绘制极坐标轮廓图。下面的示例是从OriginPro(试用版)生成的,在试用期结束后,我无法再使用商业软件来生成极坐标轮廓图,因此,我真的需要帮助来在python中使用不同的数据集生成完全相同的图将来。

enter image description here

为此图导入的数据是从excel电子表格中导入的,从电子表格导入数据并绘制热图和轮廓图没有问题,仅当我尝试从给定的数据生成极坐标轮廓图时才出现问题。根据我的阅读,这是因为对于热图和轮廓图,它投影在笛卡尔平面上,因此非常简单,但是对于极坐标图,您需要某种计算形式才能从笛卡尔坐标转换为极坐标?如果我错了,请纠正我。

这是我在python中尝试时发生的事情,应该看起来像上面给出的示例ive

![enter image description here] 2

这是我用于绘图失败的脚本

import numpy as np
import matplotlib.pyplot as plt


x = df_ODD.loc[:, 'Azimuth'].values.reshape(19,74)
y = df_ODD.loc[:, 'Inclination'].values.reshape(19,74)
z = df_ODD.loc[:, 'Values'].values.reshape(19,74)

f, ax = plt.subplots(subplot_kw=dict(projection='polar'))

plt.contour(x,y,z)


ax.set_theta_zero_location("N")
ax.set_theta_direction(-1)

cb = fig.colorbar(cax)
cax = ax.contourf(theta, r, values, 30)
cb.set_label("Normalized deviatoric stress")


plt.show()

以下是从excel电子表格导入的数据形式,如果您想知道的话,只有标记为“ X”,“ Y”和“ Z”的列会忽略标记为“β,方位角”的列。数据行一直延伸到1400 ++行。

![enter image description here] 3

在解决这个问题上,我确实需要帮助,希望你们中的任何一个都可以帮忙。谢谢

下面是将度数更改为弧度后得到的图。

enter image description here

这是脚本,我添加了将度数转换为弧度的数学函数

import numpy as np
import matplotlib.pyplot as plt
import math

x = df_ODD.loc[:, 'Azimuth'].values.reshape(19,74)
y = df_ODD.loc[:, 'Inclination'].values.reshape(19,74)
z = df_ODD.loc[:, 'Values'].values.reshape(19,74)

xi = x * math.pi/180
yi = y * math.pi/180
zi = z * math.pi/180

f, ax = plt.subplots(subplot_kw=dict(projection='polar'))

plt.contour(xi,yi,zi) # choose 20 contour levels, just to show how good its interpolation is
#ax[1].plot(x,y, 'ko ')

ax.set_theta_zero_location("N")
ax.set_theta_direction(-1)

cb = fig.colorbar(cax)
cb.set_label("Normalized deviatoric stress")

#plt.savefig('attempt polar contour.png')

plt.show()

0 个答案:

没有答案