matplotlib: Setting both major and minor ticks forces same x and y scale

一个人想着一个人 提交于 2019-12-04 17:19:54

That's because you set the x and y ticks to the same thing. If you want different sizes, then you also need different ticks. You can't set both sets of ticks to the same major_ticks positions. Make one list of tick positions for the x axis and a separate list of tick positions for y axis and then set the ticks for each axis to the corresponding list.

I updated my code as below and now I get what I wanted! Thanks!

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111)

for key, value in sorted(data.items()):
    x = value[0][2]
    y = value[0][3]
    count = value[0][4]

    ax.annotate(count, xy = (x, y), size = 3)

plt.suptitle('Number of counts', fontsize = 12)

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_aspect('equal')

# I want max x axis to be 500
ax.set_xlim(0, 501)
# I want max y axis to be 300
ax.set_ylim(0, 301)

# Set major ticks for x axis
major_xticks = np.arange(0, 501, 20)

# Set major ticks for y axis
major_yticks = np.arange(0, 301, 20)

# I want minor ticks for x axis
minor_xticks = np.arange(0, 501, 5)

# I want minor ticks for y axis
minor_yticks = np.arange(0, 301, 5)

# Specify tick label size
ax.tick_params(axis = 'both', which = 'major', labelsize = 6)
ax.tick_params(axis = 'both', which = 'minor', labelsize = 0)
# Suppress minor tick labels

ax.set_xticks(major_xticks)
ax.set_xticks(minor_yticks, minor = True)

ax.set_yticks(major_xticks)
ax.set_yticks(minor_yticks, minor = True)

# Set both ticks to be outside
ax.tick_params(which = 'both', direction = 'out')

# Specify different settings for major and minor grids
ax.grid(which = 'minor', alpha = 0.3)
ax.grid(which = 'major', alpha = 0.7)

filename = 'C:\Users\Owl\Desktop\Plot.png'
plt.savefig(filename, dpi = 150)
plt.close()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!