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
。这可能吗?
答案 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