Python导入一张1024乘以1024的图片,然后在原来x y轴的基础上,在右边添加一个新的y轴,分为两个刻度,主要刻度把1024分为64段,并且显示刻度线但不显示label,次要刻度把1024分为128段,不显示刻度线但显示基数刻度的label
时间: 2024-12-20 13:25:16 浏览: 9
在Python中,我们可以使用`matplotlib`库来实现这个需求。首先,你需要安装`matplotlib`,如果没有安装可以使用pip安装:
```bash
pip install matplotlib
```
然后,你可以按照以下步骤操作:
```python
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
from PIL import Image
# 加载图片
img = Image.open('your_image_path.jpg') # 替换为你图片的实际路径
width, height = img.size # 获取图片尺寸
# 原始图像的坐标设置
fig, ax1 = plt.subplots()
ax1.imshow(img)
# 添加新的右y轴
ax2 = ax1.twinx() # 创建新轴与原轴平行
ax2.set_position(ax1.get_position() + [1.2, 0.2, 0.7, 0.3]) # 调整新轴的位置
# 主y轴:64等分,无刻度标签
major_yticks = np.arange(0, height, height // 64)
ax1.yaxis.set_major_locator(mticker.FixedLocator(major_yticks))
ax1.yaxis.set_major_formatter(mticker.NullFormatter()) # 显示刻度线但不显示标签
# 次要y轴:128等分,有基数刻度标签
minor_yticks = np.arange(0, height, height // 128)
ax2.yaxis.set_minor_locator(mticker.FixedLocator(minor_yticks))
ax2.yaxis.set_minor_formatter(mticker.FixedFormatter([''] + list(map(str, minor_yticks[::2]))) # 只显示偶数刻度的基数
# 隐藏原轴的刻度和标签
ax1.tick_params(axis='y', which='both', left=False, right=True, labelleft=False)
ax2.tick_params(axis='y', which='both', left=False, right=True, labelright=True, bottom=False)
plt.show()
阅读全文