Python 强制Y轴从0开始

Python 强制Y轴从0开始,python,python-3.x,dataframe,matplotlib,formatting,Python,Python 3.x,Dataframe,Matplotlib,Formatting,对于我来说,是否有一个简单的方法来强制左y轴从0%开始,而不是从48%开始 这是我的密码: fig,ax1=plt.子批次(figsize=(18,12)) 图autofmt_xdate() #当图形变得太大时,在此处更新记号 勾选间距=5 #y_记号_间距=20 ax1.fmt_扩展数据=mdates.DateFormatter(“%Y-%m-%d”) 颜色='标签:蓝色' ax1.setxlabel('Date',fontsize=18) ax1.绘图(事件[dt],事件[match\u

对于我来说,是否有一个简单的方法来强制左y轴从
0%
开始,而不是从
48%
开始

这是我的密码:

fig,ax1=plt.子批次(figsize=(18,12))
图autofmt_xdate()
#当图形变得太大时,在此处更新记号
勾选间距=5
#y_记号_间距=20
ax1.fmt_扩展数据=mdates.DateFormatter(“%Y-%m-%d”)
颜色='标签:蓝色'
ax1.setxlabel('Date',fontsize=18)
ax1.绘图(事件[dt],事件[match\u rate],颜色=颜色)
ax1.勾选参数(轴=y',标签颜色=color)
#ax1.set_ylim([0100])
ax1.xaxis.set_major_locator(滴答器、多路播放机(滴答间距))
#ax1.yaxis.set_major_locator(滴答器、多路扩音器(y滴答间距))
ax2=ax1.twinx()
颜色='标签:红色'
ax2.绘图(事件测向['dt'],事件测向['score'],颜色=颜色)
ax2.勾选参数(轴=y',标签颜色=color)
ax2.xaxis.set_major_locator(滴答器、多路播放机(滴答间距))
图1紧_布局图()
plt.show()
我尝试添加了
ax1.set_ylim([0100])
,但似乎没有效果,反而挤压了东西:

我很满意从
35%开始的正确y轴

以下是我希望从google sheets版本中获得的相同数据:

检查此代码:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.ticker as mtick
import numpy as np

events_df = pd.DataFrame({'dt': pd.date_range(start = '2020-02-01', end = '2020-05-16')})
events_df['match_rate'] = 100*(0.48 + (0.9 - 0.48)*np.random.rand(len(events_df.index)))
events_df['score'] = 100*(0.35 + (1 - 0.35)*np.random.rand(len(events_df.index)))

fig, ax1 = plt.subplots(figsize=(18,12))
fig.autofmt_xdate()

tick_spacing = 5

ax1.fmt_xdata = mdates.DateFormatter('%Y-%m-%d')
color = 'tab:blue'
ax1.set_xlabel('Date',fontsize=18)
ax1.plot(events_df['dt'], events_df['match_rate'], color=color)
ax1.tick_params(axis='y', labelcolor=color)
ax1.yaxis.set_major_formatter(mtick.PercentFormatter())
ax1.set_ylim([0, 100])

ax2 = ax1.twinx()

color = 'tab:red'
ax2.plot(events_df['dt'], events_df['score'], color=color)
ax2.tick_params(axis='y', labelcolor=color)
ax2.yaxis.set_major_formatter(mtick.PercentFormatter())

fig.tight_layout()
plt.show()
这给了我一个情节:

由于我没有你的数据,我随机生成一个,以使绘图;用你的替换它们。
在我的例子中,
'match_rate'
'score'
列分别是
浮动
,范围在
(48-90)
(35-100)
之间。所以我决定

ax1.yaxis.set_major_formatter(mtick.PercentFormatter())
告诉matplotlib y轴有一个百分比格式,然后我用

ax1.set_ylim([0, 100])

这取决于您在
'match_rate'
'score'
列中拥有的数据类型:了解它们会很有用。

谢谢!这就成功了,这些列确实是浮动的。非常感谢