美文网首页
等高线绘图——使用Python

等高线绘图——使用Python

作者: 韧心222 | 来源:发表于2021-10-18 20:03 被阅读0次

今天的任务是给定一个DataFrame(名称为data,其列分别为x,y,z),如何根据这个dataframe来绘制等高线图。
这个问题研究了两天,国内网站上给出的绝大多数解决方案都是这样的:

import numpy as np
import matplotlib.pyplot as plt

stepx = 0.01; stepy = 0.01 
x = np.arange(-10,10,stepx); y = np.arange(-10,10,stepy) 
X,Y = np.meshgrid(x,y) 

def f(X,Y):           
    return(np.sqrt(X**2+Y**2))

Z = f(X, Y)
fig, ax = plt.subplots(figsize=(8,8),dpi=100)
ax.contourf(X, Y, Z)
plt.show()

但是对于我自己写的一个很复杂的函数而言,是没办法直接生成Z的,所以只能把x,y,z保存到一个DataFrame中,当然我们可以用其他的方式来解决这个问题,但是作为一个Pythonic而言,总还是有些缺陷的,所幸的是终于在一个国外的网站,找到了想要的答案,其核心代码如下:

import numpy as np
import matplotlib.pyplot as plt

Z = data.pivot_table(index='y', columns='x', values='z').values 
X_unique = np.sort(data.x.unique()) 
Y_unique = np.sort(data.y.unique())
X, Y = np.meshgrid(X_unique, Y_unique)
plt.contour(X, Y, Z)
plt.show()

相关文章

网友评论

      本文标题:等高线绘图——使用Python

      本文链接:https://www.haomeiwen.com/subject/bzoaoltx.html