matplotlib: установка основных и второстепенных тиков приводит к одинаковым масштабам x и y

Этот вопрос связан с более ранним вопросом, который я задал « matplotlib: Изменить интервал сетки и указать метки метки », но теперь я хочу изменить масштаб для осей x и y. Когда я устанавливаю диапазон для осей x и y, а затем задаю интервалы для основных и второстепенных тиков, он заставляет оси x и y быть одинаковыми.

Это мой код.

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) # I want major ticks to be every 20 major_ticks = np.arange(0, 501, 20) # I want minor ticks to be every 5 minor_ticks = np.arange(0, 501, 5) # If I do minor_ticks = np.arange(0, 301, 5), I will not get minor ticks for the entire plot # Specify tick label size ax.tick_params(axis = 'both', which = 'major', labelsize = 4) ax.tick_params(axis = 'both', which = 'minor', labelsize = 0) # Suppress minor tick labels ax.set_xticks(major_ticks) ax.set_xticks(minor_ticks, minor = True) ax.set_yticks(major_ticks) ax.set_yticks(minor_ticks, 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() 

и это то, что я получаю.

Вывод

Как я могу получить разные диапазоны для осей x и y и все еще иметь майор и минорные тики? Возможно, я пропустил что-то очень простое, но если кто-нибудь может указать на это, я очень благодарен за это!

  • Какой виджет вы используете для таблицы Excel в tkinter?
  • Pyspark Spark DataFrame - группировать и фильтровать столбцы в столбце типа карты
  • Идентификация сертификата клиента по https не выполняется
  • как импортировать файл zip на мой .py
  • pandas dataframe - удалить значения из группы с меньшим, чем X строк
  • многопроцессорный пример.
  • Почему Numpy рассматривает a + = b и a = a + b по-разному
  • multiprocessing.Queue и Queue.Queue отличаются?
  • 2 Solutions collect form web for “matplotlib: установка основных и второстепенных тиков приводит к одинаковым масштабам x и y”

    Это потому, что вы установили x и y тики на одно и то же. Если вам нужны разные размеры, вам также нужны разные клещи. Вы не можете установить оба набора тиков на одинаковые позиции major_ticks . Создайте один список позиций тика для оси x и отдельный список позиций тика для оси y, а затем установите отметки для каждой оси в соответствующий список.

    Я обновил свой код, как показано ниже, и теперь я получаю то, что хотел! Благодаря!

     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() 
    Python - лучший язык программирования в мире.