python - 具有不规则数据的 Matplotlib 轮廓
问题描述
我有一个深度在不同 x 点的土壤特性数据。钻孔数据的深度或数量不相等,因此我必须标准化代码。如果所有钻孔具有相同数量的数据和深度,没问题,np.meshgrid 可以正常工作。但是,就我而言,我遇到了麻烦,无法绘制轮廓图。
这是不可能的还是我做错了什么?
input_data = {
"BH1": {
"Chainage": 50,
"Depth": [2, 3, 4, 5, 6,7,10],
"Parameter": [10, 5, 12, 56, 34,45,62],
},
"BH2": {"Chainage": 0, "Depth": [2, 3, 4, 5, 6, 18], "Parameter": [2, 4, 12, 23, 12, 33]},
"BH3": {
"Chainage": -50,
"Depth": [2, 3, 4, 5, 6, 9],
"Parameter": [12, 14, 22, 33, 32, 70],
},
}
import numpy as np
import matplotlib.pyplot as plt
#PREPROCESSING OF DATA
depth_lengths = []
for i in input_data.keys():
depth_lengths.append(len(input_data[i]["Depth"]))
max_depth_length = max(depth_lengths)
for i in input_data.keys():
while len(input_data[i]["Depth"]) < max_depth_length:
input_data[i]["Depth"].append(None)
input_data[i]["Parameter"].append(None)
parameter = []
for i in range(max_depth_length):
temp = []
for j in input_data.keys():
temp.append(input_data[j]["Parameter"][i])
parameter.append(temp)
depth = []
chainage = []
parameter2 = []
for i in input_data.keys():
for j in input_data[i]["Depth"]:
depth.append(j)
for j in input_data[i]["Parameter"]:
parameter2.append(j)
chainage.append(input_data[i]["Chainage"])
# X, Y = np.meshgrid(chainage, depth)
parameter2 = np.array(parameter2*3).reshape(-1,3)
fig,ax=plt.subplots()
ax.contourf(X, Y, parameter2, 8, alpha=.75, cmap='jet')
解决方案
不确定这是否是您想要的,但这会使用您的数据生成一个填充的等高线图。z(参数)有很多缺失值,所以图表看起来不太好。
X= [[50,-50,-50,-50,-50,-50,-50,-50,-50],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[50, 50, 50, 50, 50, 50, 50, 50, 50]]
Y= [[2, 3, 4, 5, 6, 7, 9, 10, 18],
[2, 3, 4, 5, 6, 7, 9, 10, 18],
[2, 3, 4, 5, 6, 7, 9, 10, 18]]
z= 3*np.array([[12, 14, 22, 33, 32, np.NaN, 70, np.NaN, np.NaN],
[2, 4, 12, 23, 12, np.NaN, np.NaN, np.NaN, 33],
[10, 5, 12, 56, 34,45,np.NaN, 62, np.NaN]])
plt.contourf(X, Y, z, 8, alpha=.75, cmap='jet')
plt.show()
推荐阅读
- excel - 在excel中计算30小时(24小时+)的时间作为一天
- node.js - 如何使用 Node.JS 对 MongoDB 中的变量使用 $inc 运算符
- acumatica - Acumatica 和单位成本
- reactjs - createClass 结果上的调用方法应该很简单
- qt - 如何通过查看 QTableView 中的文本进行排序?
- python - 'NoneType' 对象在更改模型时没有属性 '_meta'
- regex - 如何将否定(与emacs兼容)正则表达式限制为否定字符串
- assembly - 如何在nasm屏幕上的指定位置写入文本?
- r - 在字符串中的每 n 个字符中搜索一个模式
- html - html标签样式问题