因此,我目前正在绘制一个散点图,在matplotlib中有许多x
和y
:
plt.scatter(x, y)
我想在这个散点图上画一条横穿整个图的线(即碰到两个“边界”),我知道梯度和截距-m
和方程c
中的y = mx +c
。在
我曾考虑过获取绘图的4个点(计算最小和最大散射x
和{
如图中所示,四个边界坐标如下:
-1,-2
-1,2
6,-2
6,2
我现在有一条线,我需要绘制,不能超过这些边界,但如果它进入绘图必须触及两个边界点。在
所以我可以检查x=-1时y等于什么,然后检查这个值是否在-1和6之间,如果是,这条线必须穿过左边的边界,所以画出来,以此类推,以此类推。在
理想情况下,我会创建一条从-无限到无穷大的直线,然后裁剪它以适合情节。在
这里的想法是在图中画一条
y=m*x+y0
的线。这可以通过将最初以轴坐标表示的水平线转换为数据坐标,根据直线方程应用仿射2d变换并转换回屏幕坐标来实现。这里的优点是你根本不需要知道轴的极限。您也可以自由缩放或平移绘图;直线将始终保持在轴边界内。因此,它有效地实现了从-infinity到+infinity的行。
虽然这个解决方案乍一看有点复杂,但不需要完全理解它。只需将
axaline
函数复制到代码中并按原样使用它。为了在不需要转换的情况下进行自动更新,可以添加回调,这样每次绘图中发生变化时都会重置转换。 ^{pr2}$
您可以尝试:
它给出了:
相关问题 更多 >
编程相关推荐