"设置刻度标签,第一个数组列表的消失,跳到第二个数组列表",那么基本上为什么第一个数组没有设置呢?



请查看下面的结果,正如您可以在图像中看到的,当我设置标签时,它突然跳转到第二个列表(x_tick[1]和y_tick[1])为什么?第一个列表(x_tick[0]和y_tick[0])发生了什么?

当我使用图像来绘制这种情况时,但没有图像,它会显示

注意:用于matplotlib中的图像。Y标签,从上到下设置x标签,从左到右设置


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image, ImageDraw

point=(1.28358, 103.86921, 1.11504, 104.16138) #BATAM3
im = Image.open('BATAM3.png', 'r')
x_tick = list(map(lambda x: round(x, 7), np.linspace(point[1], point[3], endpoint=True, num=9)))
y_tick = list(map(lambda x: round(x, 7), np.linspace(point[2], point[0], endpoint=True, num=6)))
y_tick = sorted(y_tick, reverse=True)

print(x_tick)
print(y_tick)
#print(x_tick[0])
fig, ax = plt.subplots(figsize=(15, 15))
ax.imshow(im)
ax.set_xlabel('Longitude')
ax.set_ylabel('Latitude')
ax.set_xticklabels(x_tick)
ax.set_yticklabels(y_tick)
ax.grid()

这个收益率:

[103.86921, 103.9057312, 103.9422525, 103.9787737, 104.015295, 104.0518162, 104.0883375, 104.1248587, 104.16138]
[1.28358, 1.249872, 1.216164, 1.182456, 1.148748, 1.11504]

这里是图像imshow(im)的结果:

https://files.fm/thumb_show.php?我= c6u8b5bhg

让我的问题更容易理解:

https://files.fm/thumb_show.php?我= 7 vucbyuhg

正如文档所述,在设置标签之前,需要先使用set_xticks设置刻度位置。

https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.set_xticklabels.html

w, l = im.size
x_pos = list(map(lambda x: round(x), np.linspace(0, w, endpoint=True, num=9)))
fig, ax = plt.subplots(figsize=(15, 15))
ax.imshow(im)
ax.set_xlabel('Longitude')
ax.set_ylabel('Latitude')
ax.set_xticks(x_pos) #set the positions
ax.set_xticklabels(x_tick)
ax.set_yticklabels(y_tick)
ax.grid()

问题解决了,感谢@Said Al Faraby的答案。修复方法如下:

point=(1.28358, 103.86921, 1.11504, 104.16138)
im = Image.open('BATAM3.png', 'r')
x_pos = list(map(lambda x: round(x), np.linspace(0, im.size[0], endpoint=True, num=10)))
y_pos = list(map(lambda x: round(x), np.linspace(0, im.size[1], endpoint=True, num=6)))
x_tick = list(map(lambda x: round(x, 7), np.linspace(point[1], point[3], endpoint=True, num=10)))
y_tick = list(map(lambda x: round(x, 7), np.linspace(point[2], point[0], endpoint=True, num=6)))
y_tick = sorted(y_tick, reverse=True)
fig, ax = plt.subplots(figsize=(15, 15))
ax.imshow(im)
ax.set_xlabel('Longitude')
ax.set_ylabel('Latitude')
ax.set_xticks(x_pos)
ax.set_yticks(y_pos)
ax.set_xticklabels(x_tick)
ax.set_yticklabels(y_tick)
ax.grid()

和这里的图像:https://i.stack.imgur.com/1kWl8.jpg

最新更新