问题:
Python用matplotlib.pyplot画线,坐标轴是靠在最左边和最底下的,而且坐标轴的刻度数字不是间隔1,而且X轴和Y轴的刻度间距(像素)也不一样,怎么解决呢?请往下看。
代码:
# -*- coding: utf-8 -*-
"""
Created on Mon Jul 24 11:01:24 2023
@author: howard
"""
import numpy as np
import matplotlib.pyplot as plt
#调整坐标轴:坐标轴移到原点(0,0);坐标轴刻度数字间隔1;刻度之间的像素一样
def adjustAxis():
# 创建图形和坐标轴对象
fig, ax = plt.subplots()
# 设置Y轴在0位置
ax.spines['left'].set_position('zero')
# 设置X轴在0位置
ax.spines['bottom'].set_position('zero')
# 隐藏右边和上边的坐标轴线
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 设置X、Y轴刻度间隔为1
ax.xaxis.set_major_locator(plt.MultipleLocator(1))
ax.yaxis.set_major_locator(plt.MultipleLocator(1))
# 调整图形的大小,保持宽高大小一样,才能保证X轴和Y轴刻度之间的像素间隔相等
fig.set_size_inches(5, 5) # 根据需要调整图形的大小
#这个步骤是画网格线
plt.grid(True, linestyle="--", alpha=0.5)
# 利用 matplotlib 来进行画图
def drawXY():
adjustAxis()
# param:起点,终点,间距
x = np.arange(-3,4,1)
y = x
plt.plot(x, y)
plt.show()
if __name__ == '__main__':
drawXY()
实际效果图
当然,有个小问题:
由于这个图形会自动适应窗体的大小,所以当X,Y的取值范围不同的时候,或者用鼠标改变这个窗口大小之后,是不能维持X,Y轴刻度之间的像素是一样的。