matplotlib: Setting both major and minor ticks forces same x and y scale(matplotlib:设置主要和次要刻度会强制使用相同的 x 和 y 比例)
问题描述
这个问题与我之前提出的问题matplotlib:更改网格间隔并指定刻度标签"但现在我想更改 x 和 y 轴的比例.当我设置 x 和 y 轴的范围,然后指定主要和次要刻度的间隔时,它会强制 x 和 y 轴相同.
This question is related to the earlier question I asked "matplotlib: Change grid interval and specify tick labels" but now I want to change the scale for x and y axes. When I set the range for x and y axes and then specify the intervals for major and minor ticks, it forces the x and y axes to be the same.
这是我的代码.
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:UsersOwlDesktopPlot.png'
plt.savefig(filename, dpi = 150)
plt.close()
这就是我得到的.
我怎样才能得到 x 和 y 轴的不同范围并且仍然有这样的主要和次要刻度?我可能遗漏了一些非常简单的东西,但如果有人能指出,我非常感谢!
How could I get different ranges for x and y axes and still have major and minor ticks like this? I might be missing something very simple but if somebody could point it out, I am very thankful for that!!
推荐答案
那是因为您将 x 和 y 刻度设置为相同的东西.如果您想要不同的尺寸,那么您还需要不同的刻度.您不能将两组刻度设置为相同的 major_ticks
位置.为 x 轴制作一个刻度位置列表,为 y 轴制作一个单独的刻度位置列表,然后将每个轴的刻度设置到相应的列表中.
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.
这篇关于matplotlib:设置主要和次要刻度会强制使用相同的 x 和 y 比例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:matplotlib:设置主要和次要刻度会强制使用相同的 x 和 y 比例


基础教程推荐
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- 包装空间模型 2022-01-01
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- 求两个直方图的卷积 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01