如何在同一绘图上很好地缩放图形和向量场[奇怪的鳞片]

2024-04-19 04:09:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我是matplotlib的新手,尝试在同一个图上绘制两个图形和一个向量场

当我运行下面的代码时,我遇到了一些缩放问题。我猜想这是由于图上未定义的y轴,但我不知道如何用y来绘制它们。当我定义y的间隔时,我得到了非常奇怪的照片。我需要一些用于图形和向量场的高分辨率图片[0,7],[0,7]。当我运行下面的代码时,我得到了负y轴的结果,我不想绘制

我还想知道怎样才能使这个情节更大,分辨率更高。当前图像的大小非常小

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

#graphs
a=1
b=1
x= np.mgrid[0:6:15j]   #problematic part I assume
k = b/(a*x)
l = (-1 + (b+1)*x) / (a*(x**2))

ca =plt.plot(x, k, x,l)
#Vector Field,Quiver 
Y, X = np.mgrid[0:6:12j, 0:6:12j]

U = 1- (b + 1)* X + ( a*(X**2) * Y)
V = (b * X) - (a * X**2 * Y)

speed = np.sqrt(U**2 + V**2)
UN = U/speed
VN = V/speed

quiv = plt.quiver(X, Y, UN, VN, 
           color='Black', 
           headlength=5)
plt.show()

Tags: 代码import图形matplotlibasnp绘制plt
1条回答
网友
1楼 · 发布于 2024-04-19 04:09:48

当我运行您的代码时,我会收到运行时警告,表示被零除,这会使k的第一个值变成无穷大,而l的第一个值变成无穷大。但不确定这是你的问题,你所说的缩放问题到底是什么意思?是否希望图形集中在x和y的特定范围内?你通常会用plt.xlimplt.ylim来做这类事情。尝试添加如下内容:

plt.ylim((-0.2,6.2))

如果从命令行运行此操作,还应该能够手动调整图形的大小(只需拖动窗口的一角),并保存该图形以获得更大的图像。如果您需要更高的分辨率或更精确的控件,请查看savefig函数。可以在运行show()之前调用它

相关问题 更多 >