我有一个图像,我使用pyfits加载到2D数组中。我想通过图像上的两个像素绘制一条线,并使用添加的新线(而不是绘图)保存它。在此之后,我想绘制一条垂直于前一行的线条,颜色不同。使用matplotlib实现这一目标的最佳方法是什么?我用PIL试过了。我无法做到这一点。请查看代码并建议我这样做的方法。我也附上了图片
def plotAxes(map, angle, x_centroid, y_centroid):
hor = math.floor(x_centroid + 20*(math.cos(angle)))
ver = math.floor(y_centroid - 20*(math.sin(angle)))
hor1 = math.floor(x_centroid + 20*(math.cos(angle+90.0)))
ver1 = math.floor(y_centroid - 20*(math.sin(angle+90.0)))
map_height = len(map)
map_width = len(map[0])
point = [ver, hor]
center = [y_centroid, x_centroid]
Max = np.max(map)
array = np.zeros((map_height, map_width), int)
for i in range(0, map_height):
for j in range(0, map_width):
array[i][j] = (math.floor((float(map[i][j])/float(Max))*255))
im = Image.fromarray(np.uint8(array))
draw = ImageDraw.Draw(im)
draw.line((x_centroid,y_centroid, hor,ver ), fill="red")
draw.line((x_centroid,y_centroid, hor1,ver1 ), fill="red")
im.show()
但是上面的代码似乎并没有垂直打印线条。角度看起来是120而不是90.
答案 0 :(得分:1)
抱歉。我犯了一个错误,将角度传递给Sin和cos度数。我通过弧度,它工作。三江源
angle = (angle * math.pi)/180
hor = math.floor(x_centroid + 20*(math.cos(angle)))
ver = math.floor(y_centroid - 20*(math.sin(angle)))
hor1 = math.floor(x_centroid + 20*(math.cos(angle+ (math.pi)/2)))
ver1 = math.floor(y_centroid - 20*(math.sin(angle+(math.pi)/2)))