matplotlib 如何更改x轴,使其没有白色?

y53ybaqx  于 2023-05-07  发布在  其他
关注(0)|答案(2)|浏览(112)

因此,目前正在学习如何导入数据,并与它在matplotlib和我有麻烦,即使我有确切的代码,从书中。

这就是图的样子,但我的问题是,如何在x轴的开始和结束之间没有白色的地方得到它。
代码如下:

import csv

from matplotlib import pyplot as plt
from datetime import datetime

# Get dates and high temperatures from file.
filename = 'sitka_weather_07-2014.csv'
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)

    #for index, column_header in enumerate(header_row):
        #print(index, column_header)
    dates, highs = [], []
    for row in reader:
        current_date = datetime.strptime(row[0], "%Y-%m-%d")
        dates.append(current_date)

        high = int(row[1])
        highs.append(high)

# Plot data. 
fig = plt.figure(dpi=128, figsize=(10,6))
plt.plot(dates, highs, c='red')

# Format plot.
plt.title("Daily high temperatures, July 2014", fontsize=24)
plt.xlabel('', fontsize=16)
fig.autofmt_xdate()
plt.ylabel("Temperature (F)", fontsize=16)
plt.tick_params(axis='both', which='major', labelsize=16)

plt.show()
xa9qqrwz

xa9qqrwz1#

在边缘处有一个自动边距设置,它确保数据在轴脊椎内很好地拟合。在这种情况下,在y轴上可能需要这样的裕度。默认情况下,以轴跨度为单位将其设置为0.05
要将x轴上的边距设置为0,请使用

plt.margins(x=0)

ax.margins(x=0)

这取决于上下文。参见the documentation
如果您想在整个脚本中去掉边距,可以使用

plt.rcParams['axes.xmargin'] = 0

在脚本的开头(当然对于y也是一样)。如果你想彻底摆脱边距,你可能需要修改matplotlib rc file中的相应行:

axes.xmargin : 0
axes.ymargin : 0

示例

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))
tips.plot(ax=ax1, title='Default Margin')
tips.plot(ax=ax2, title='Margins: x=0')
ax2.margins(x=0)

或者,使用plt.xlim(..)ax.set_xlim(..)手动设置轴的限制,以使没有白色。

kuhbmx9i

kuhbmx9i2#

如果您只想删除一边的边距而不删除另一边的边距,例如:删除右边的边距而不是左边的边距,你可以在matplotlib axes对象上使用set_xlim()

import seaborn as sns
import matplotlib.pyplot as plt
import math

max_x_value = 100

x_values = [i for i in range (1, max_x_value + 1)]
y_values = [math.log(i) for i in x_values] 

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))
sn.lineplot(ax=ax1, x=x_values, y=y_values)
sn.lineplot(ax=ax2, x=x_values, y=y_values)
ax2.set_xlim(-5, max_x_value) # tune the -5 to your needs

相关问题