我目前正在一家公司里做实习计划,我的教育背景实际上是石油地球科学,与编程无关。因此,对于我已犯或将要犯的任何错误,我深表歉意。
我的主管要求我像下面的示例一样绘制极坐标轮廓图。下面的示例是从OriginPro(试用版)生成的,在试用期结束后,我无法再使用商业软件来生成极坐标轮廓图,因此,我真的需要帮助来在python中使用不同的数据集生成完全相同的图将来。
为此图导入的数据是从excel电子表格中导入的,从电子表格导入数据并绘制热图和轮廓图没有问题,仅当我尝试从给定的数据生成极坐标轮廓图时才出现问题。根据我的阅读,这是因为对于热图和轮廓图,它投影在笛卡尔平面上,因此非常简单,但是对于极坐标图,您需要某种计算形式才能从笛卡尔坐标转换为极坐标?如果我错了,请纠正我。
这是我在python中尝试时发生的事情,应该看起来像上面给出的示例ive
] 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 ++行。
] 3
在解决这个问题上,我确实需要帮助,希望你们中的任何一个都可以帮忙。谢谢
下面是将度数更改为弧度后得到的图。
这是脚本,我添加了将度数转换为弧度的数学函数
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()