我想用for循环分析已经在图上绘制的线。我尝试使用ax.get_lines()[0].get_data()
函数,但无论我画什么样的线(它通过哪些点),它都会返回([0, 1], [0, 1])
作为数据。
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 7.00]
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim([0, 100])
ax.set_ylim([0, 100])
point1 = [-8,4]
point2 = [10,15]
plt.axline(point1,point2) # drawing the line
lines = ax.get_lines()
print(lines[0].get_data()) # retrieving data
plt.show()
2条答案
按热度按时间ddrv8njm1#
我查看了各种资源中
get_lines()
的用法,它似乎被用来获取行数(在文献中)。就像这样:如果你想得到两点之间(* 直线 )的描述( 大概是斜率和截距 *),你可以做一个像这样的简单函数来实现结果:
根据问题中给出的要点,它将产生以下结果:
zlwx9yxi2#
使用
axline
时,提供的坐标存储在line._xy1
和line._xy2
中(类似地,斜率数据存储在line._slope
中,但如果不使用此参数,则将存储在None
中)。这与使用普通
plot
函数生成的行不同,在普通plot
函数中,可以使用line.get_xydata()
获取数据。我不完全确定为什么要使用[0,1]
,但它被硬编码到source code中(请看_AxLine
类,其中super.__init__
被调用用于Line2D
类,[0,1]
被传递用于x
和y
数据)。