我了解到,等值线图显示了所有共享特定值的点的线. 但当我用matplotlib绘制x2和y2之和的平方的等值线图时,(1,1)的点(计算为1.41)位于标记为1.5和2.0的等值线之间.

该点不应该位于1.0和1.5的轮廓线之间吗?

同样,(0.707,0.707)的点(计算为1)位于1.5的等值线上. 那个点不应该在1.0轮廓线上吗?

我在这里错过了什么/做错了什么?

import numpy as np
import matplotlib.pyplot as plt

zval = 1
xval = np.sqrt(zval**2/2)
print(xval)   # 0.707
yval = xval
print(yval)
print(np.sqrt(xval**2 + yval**2))  # 1

xlist = np.linspace(-3.0, 3.0, 3)
ylist = np.linspace(-3.0, 3.0, 4)
X, Y = np.meshgrid(xlist, ylist)
Z = np.sqrt(X**2 + Y**2)

fig = plt.figure(figsize=(7,6))
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
ax = fig.add_axes([left, bottom, width, height]) 

cp = ax.contour(X, Y, Z)
ax.clabel(cp, inline=True, 
          fontsize=10)
ax.set_title('Contour Plot')
ax.set_xlabel('x (cm)')
ax.set_ylabel('y (cm)')

# Z value is 1 but point is plotted beyond the 1.5 line -- why?
ax.scatter(
    x=xval, 
    y=yval,
    color="orange"
)

ax.scatter(1,1, color="red")
print(np.sqrt(1**2 + 1**2))

plt.grid()
plt.show()

contour-and-dots

推荐答案

您仅在x方向上为matplotlib提供了3个点,在y方向上为4个点,因此它用于生成轮廓的插值将具有很大的误差.增加积分数,您会得到更准确的结果.

xlist = np.linspace(-3.0, 3.0, 100)
ylist = np.linspace(-3.0, 3.0, 100)

Python相关问答推荐

Python tkinter关闭第一个窗口,同时打开第二个窗口

Python:MultiIndex Dataframe到类似json的字典列表

除了Python之外,可以替代bare?

"如果发生特定错误,返回值

用Python获取HTML Span类中的数据

使用Python Cerberus初始化一个循环数据 struct (例如树)(v1.3.5)

使用多个性能指标执行循环特征消除

如何调整spaCy token 化器,以便在德国模型中将数字拆分为行末端的点

如何使用Jinja语法在HTML中重定向期间传递变量?

按列分区,按另一列排序

用Python解密Java加密文件

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

Pandas:将多级列名改为一级

如何保持服务器发送的事件连接活动?

不能使用Gekko方程'

如何在FastAPI中为我上传的json文件提供索引ID?

在pandas数据框中计算相对体积比指标,并添加指标值作为新列

如何使用OpenGL使球体遵循Python中的八样路径?

OpenGL仅渲染第二个三角形,第一个三角形不可见

如何在海上配对图中使某些标记周围的黑色边框