天天看点

怎么让matlab坐标轴纵轴只显示整数,python - 如何强制matplotlib只显示Y轴上的整数...

我正在可视化的数据只有当它是整数时才有意义。

就我分析的信息而言,记录的0.2没有意义。

如何强制Matplotlib只使用Y轴上的整数。即1、100、5等?非0.1、0.2等for a in account_list:

f = plt.figure()

f.set_figheight(20)

f.set_figwidth(20)

f.sharex = True

f.sharey=True

left = 0.125 # the left side of the subplots of the figure

right = 0.9 # the right side of the subplots of the figure

bottom = 0.1 # the bottom of the subplots of the figure

top = 0.9 # the top of the subplots of the figure

wspace = 0.2 # the amount of width reserved for blank space between subplots

hspace = .8 # the amount of height reserved for white space between subplots

subplots_adjust(left=left, right=right, bottom=bottom, top=top, wspace=wspace, hspace=hspace)

count = 1

for h in headings:

sorted_data[sorted_data.account == a].ix[0:,['month_date',h]].plot(ax=f.add_subplot(7,3,count),legend=True,subplots=True,x='month_date',y=h)

#set bottom Y axis limit to 0 and change number format to 1 dec place.

axis_data = f.gca()

axis_data.set_ylim(bottom=0.)

from matplotlib.ticker import FormatStrFormatter

axis_data.yaxis.set_major_formatter(FormatStrFormatter('%.0f'))

#This was meant to set Y axis to integer???

y_formatter = matplotlib.ticker.ScalarFormatter(useOffset=False)

axis_data.yaxis.set_major_formatter(y_formatter)

import matplotlib.patches as mpatches

legend_name = mpatches.Patch(color='none', label=h)

plt.xlabel("")

ppl.legend(handles=[legend_name],bbox_to_anchor=(0.,1.2,1.0,.10), loc="center",ncol=2, mode="expand", borderaxespad=0.)

count = count + 1

savefig(a + '.png', bbox_inches='tight')

最佳答案

最灵活的方法是指定默认勾号定位器(integer=True)执行与此类似的操作:import numpy as np

import matplotlib.pyplot as plt

import matplotlib.ticker as ticker

fig, ax = plt.subplots()

# Be sure to only pick integer tick locations.

for axis in [ax.xaxis, ax.yaxis]:

axis.set_major_locator(ticker.MaxNLocator(integer=True))

# Plot anything (note the non-integer min-max values)...

x = np.linspace(-0.1, np.pi, 100)

ax.plot(0.5 * x, 22.8 * np.cos(3 * x), color='black')

# Just for appearance's sake

ax.margins(0.05)

ax.axis('tight')

fig.tight_layout()

plt.show()

或者,您可以手动将勾号位置/标签设置为Marcin和Joel Suggest(或使用)。这样做的缺点是,您需要计算出什么记号位置是有意义的,而不是让matplotlib根据轴限制选择一个合理的整数记号间隔。