如何在matplotlib中反复调用ylim()?

时间:2018-08-18 10:02:05

标签: python-2.7 pandas matplotlib

此处的

ylim()输入是使用std_input给出的。我使用的是Python 2.7。

df = pd.read_csv('sy_1_Mlogi_01081081_1.csv')

df.rename( columns={'Unnamed: 0':'time'}, inplace=True )

df['time'] = pd.to_datetime(df['time'])

df['Time'] = df['time'].dt.time

df['date'] = df['time'].dt.date

df = df.set_index(['date'])

a = input('starting_Date : ')
b = input('ending_Date   : ')

starting_date = datetime.strptime(a, "%Y-%m-%d").date()
ending_date = datetime.strptime(b, "%Y-%m-%d").date()

df = df.loc[starting_date:ending_date]

x = df['Time']

y = df['d']

fig, ax = plt.subplots()
ax.plot_date(x, y)
long_title = 'Cycling {} to {} \n'
plt.title(long_title.format(starting_date,ending_date))
plt.legend()
plt.ylabel('duration')
plt.ylim(ymax=input("Enter Duration Max Limit : "))  
plt.ylim(ymin=input("Enter Duration Min Limit : ")) 
plt.xlabel('Time')
fig.autofmt_xdate()
plt.show()

在这里如何将ylim()放在loop中,这样我就不必一次又一次地运行程序。只需输入ylim即可得到plot。这可能吗?

2 个答案:

答案 0 :(得分:1)

我看不到需要for循环。可能是我没有正确收到您的问题。为什么不先保存用户输入值,然后分配限制。您将不得不转换为float

# Store the user input in variables (as you are doing)
ymin=input("Enter Duration Min Limit : ")
ymax=input("Enter Duration Max Limit : ")
plt.ylim(ymin, ymax)

也许您将不得不根据数据类型将用户输入转换为float/int

答案 1 :(得分:1)

您可以循环使用set_ylim

x = pd.date_range('2010-01-01', periods=100, freq='D')
y=range(100)

for i in range(3):
    fig, ax = plt.subplots()
    ax.plot_date(x, y)
    ax.set_ylim([input("Enter Min Limit : "),input("Enter Max Limit : ")])

详细信息:

(1)ylim接受参数[min, max]

(2)您可以将set_ylim应用于特定的axes