簡體   English   中英

通過兩點畫線,而不是在兩點之間畫線(在對數刻度上,但仍然是一條直線)

[英]Drawing line through two points, instead of between (on a log scale, but still a straight line)

我目前正在開發一個 Python API,負責繪制在使用 Angular 的前端應用程序中制作的圖表和切線。 在此應用程序中,可以移動點來調整垂直於曲線的直線。

當用戶認為這是應該的方式時,可以使用 matplotlib 導出圖表。

當僅使用以下代碼在點之間繪制時:

x_values = [tangent.point1.x, tangent.point2.x]
y_values = [tangent.point1.y, tangent.point2.y]
plt.plot(x_values, y_values, scalex=False, scaley=False)

我得到正常的線條如下在此處輸入圖像描述

盡管我希望線條一直延伸到繪圖的邊界,因為如果用戶設置的兩個點本身不相交。

我試過將這兩個點轉換成一個方程,並從那里計算出兩個點但沒有運氣(直線)。 還嘗試使用 np.linspace(xMin, xMax, 100) 產生指數曲線。

如果好奇,這就是用戶會與之交互的內容在此處輸入圖像描述

問題/TLDR:有沒有辦法通過點畫線(不確定因為我在 plt.plot 中將 scalex 和 scaley 設置為 false)

編輯:

我在另一篇文章中遇到過 ax.axline(p1, p2)。 這繪制了一條無限線,但沒有 scalex 和 scaley 屬性。 這篇文章還提到了將 plt.axes() 存儲在變量中並在繪圖后將它們應用為 xlim 和 ylim。 這導致線條不可見??? 我的意思是將這些點打印到控制台。 我可以看到這條線應該在圖中的什么位置,只是不在那里。

編輯 2:我很愚蠢,axline 中的 p1 是 p1.x 和 p2.x 而不是 p1.x 和 p1.y。 這通過不越界並再次可見來解決。

要繪制無限線,可以使用以下方法之一(也可以使用其他選項)

plt.axlines((x1,y1), (x2,y2))

ax.axlines((x1, y1),(x2, y2))

將兩個點都放在邊界內會將線延伸到邊界框的邊緣。

如果點在邊界框之外,邊界框將相應地縮放以適應框中的指定點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM