Đây là một phiên bản sửa đổi của câu trả lời được chấp nhận ở trên. Có lẽ ai đó sẽ tìm thấy hữu ích
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
import numpy as np
from matplotlib.ticker import FormatStrFormatter
_fontsize_legend = 10
_fontsize = 15
DP = 2
fig = plt.figure(figsize=(12, 12), dpi=100, facecolor='w', edgecolor='k')
##fig = plt.figure()
fig.canvas.draw()
ax = plt.gca()
# set up axis
ax.spines['left'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('zero')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# draw curve
x = np.arange(-2.5,2.5,0.01)
line, = ax.plot(x, x**2)
#set bounds
ax.set_ybound(-1,7)
## THIS IS THE EDIT
ax.xaxis.set_major_locator(MultipleLocator(1/4))
ax.yaxis.set_major_locator(MultipleLocator(1/4))
ax.xaxis.grid(True,'major',linewidth=2/DP,linestyle='-',color='#d7d7d7',zorder=0)
ax.yaxis.grid(True,'major',linewidth=2/DP,linestyle='-',color='#d7d7d7')
ax.xaxis.set_minor_locator(MultipleLocator((1/4)/5))
ax.yaxis.set_minor_locator(MultipleLocator((1/4)/5))
ax.xaxis.grid(True,'minor',linewidth=0.5/DP,linestyle='-',color='#d7d7d7')
ax.yaxis.grid(True,'minor',linewidth=0.5/DP,linestyle='-',color='#d7d7d7')
ax.set_axisbelow(True)
ax.set_aspect('equal')
##ax.axhline(linewidth=0)
##ax.axvline(linewidth=0)
ax.xaxis.set_major_formatter(FormatStrFormatter('%i'))
xticks = ax.xaxis.get_major_ticks()
for i,l in enumerate(xticks):
if not (i - 1) % 4 == 0:
xticks[i].label1.set_visible(False)
else:
xticks[i].label1.set_fontsize(_fontsize)
ax.yaxis.set_major_formatter(FormatStrFormatter('%i'))
yticks = ax.yaxis.get_major_ticks()
for i,l in enumerate(yticks):
if not (i - 1) % 4 == 0:
yticks[i].label1.set_visible(False)
else:
yticks[i].label1.set_fontsize(_fontsize)
figManager = plt.get_current_fig_manager()
figManager.window.showMaximized()
plt.show()
This is how this sample looks [picture]
này tuyệt vời !!! Điều đó có vẻ chỉ là những gì tôi đã sau. Rất rất cảm ơn! – Geddes
Câu hỏi cuối cùng của tôi là: có cách nào để có được ba kiểu đường lưới khác nhau không? Tôi muốn có một phong cách cho * 0.2, một phong cách khác cho * 1 và một phong cách khác cho * 2 (như trong đồ thị giấy). Điều này có vẻ khó khăn như matplotlib dường như chỉ áp dụng các ve lớn/nhỏ. Cảm ơn một lần nữa! – Geddes
@Geddes, xem các chỉnh sửa ở trên. Tôi nghĩ cách dễ nhất là chỉ điều chỉnh các đường lưới dựa trên vị trí của chúng (tức là trên bội số của 2). – Mark