plt.figure() plt.plot(data.index, data['xiaoliang']) plt.xlabel('日期', fontproperties=font) # 设置x轴标签字体 plt.ylabel('销量', fontproperties=font) # 设置y轴标签字体 plt.title('销量变化', fontproperties=font) # 设置标题字体 plt.savefig('total.png',dpi=300)设置这个图片的大小
时间: 2024-01-14 11:02:51 浏览: 60
你可以在plt.figure()中添加figsize参数来设置图片的大小,例如:
```
plt.figure(figsize=(8,6))
```
这将创建一个宽度为8英寸,高度为6英寸的图片。你也可以根据需要调整这些数字。
相关问题
data['time'] = pd.to_datetime(data['time'], format='%Y-%m') data['xiaoliang'] = data['xiaoliang'].astype(int) data = data.set_index('time') data = data.sort_index() print(data) model = sm.tsa.ExponentialSmoothing(data, trend='add', seasonal='add', seasonal_periods=12).fit() forecast = model.forecast(12) idx = pd.date_range(start=data.index[-1], periods=12, freq='M') forecast.index = idxplt.figure(figsize=(9.62,8.62)) plt.plot(data, label='Original Data') plt.plot(forecast, label='Forecasted Data') plt.xlabel('日期', fontproperties=font,fontsize=16) # 设置x轴标签字体 plt.ylabel('销量', fontproperties=font,fontsize=16) # 设置y轴标签字体 plt.title('销量变化', fontproperties=font,fontsize=16) # 设置标题字体 plt.xticks(fontproperties=font, fontsize=14) plt.yticks(fontproperties=font, fontsize=14) plt.savefig('extract.png',dpi=300)请将这段代码改成使用最小二乘法的线性模型
好的,以下是使用最小二乘法的线性模型的修改代码:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.optimize import leastsq
# 读取数据
data = pd.read_csv('data.csv')
data['time'] = pd.to_datetime(data['time'], format='%Y-%m')
data['xiaoliang'] = data['xiaoliang'].astype(int)
data = data.set_index('time')
data = data.sort_index()
# 定义模型函数
def linear_func(params, x):
a, b = params
return a * x + b
# 定义误差函数
def error_func(params, x, y):
return linear_func(params, x) - y
# 使用最小二乘法拟合线性模型
x = np.arange(len(data))
y = data['xiaoliang']
init_params = [1, 1]
params, _ = leastsq(error_func, init_params, args=(x, y))
# 计算拟合结果
forecast = linear_func(params, np.arange(len(data), len(data) + 12))
# 绘制拟合图像
idx = pd.date_range(start=data.index[-1], periods=12, freq='M')
forecast = pd.Series(forecast, index=idx)
plt.figure(figsize=(9.62,8.62))
plt.plot(data, label='Original Data')
plt.plot(forecast, label='Forecasted Data')
plt.xlabel('日期', fontproperties=font, fontsize=16)
plt.ylabel('销量', fontproperties=font, fontsize=16)
plt.title('销量变化', fontproperties=font, fontsize=16)
plt.xticks(fontproperties=font, fontsize=14)
plt.yticks(fontproperties=font, fontsize=14)
plt.savefig('extract.png', dpi=300)
```
以上代码使用`leastsq`函数进行最小二乘法拟合,其中`linear_func`函数定义了线性模型,`error_func`函数定义了误差函数。拟合结果可以直接使用线性模型计算得到,然后绘制拟合图像即可。需要注意的是,这里的时间序列数据没有考虑季节性因素,因此线性模型可能无法很好地拟合实际数据。在实际应用中,需要根据具体情况选择合适的模型和算法。
data['time'] = pd.to_datetime(data['time'], format='%Y-%m') data['xiaoliang'] = data['xiaoliang'].astype(int) data = data.set_index('time') data = data.sort_index() print(data) plt.plot(data.index, data['xiaoliang']) # 设置图表标题和轴标签 plt.title("时间序列折线图") plt.xlabel("时间") plt.ylabel("数值") # 显示图表 plt.show() #model = Holt(data).fit() #model=ExponentialSmoothing(data,trend='add',seasonal='add',seasonal_periods=12).fit() model = auto_arima(data, seasonal=True) # 预测未来销量 #forecast = model.forecast(12) forecast = model.predict(n_periods=6) print(forecast) # 绘制预测结果和原始数据的图像 plt.plot(data, label='Original Data') plt.plot(forecast, label='Forecasted Data') plt.legend() plt.show()请将这段代码改为线性模型
好的,下面是将这段代码改为线性模型后的代码:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# 读取数据并设置时间索引
data = pd.read_csv('data.csv')
data['time'] = pd.to_datetime(data['time'], format='%Y-%m')
data['xiaoliang'] = data['xiaoliang'].astype(int)
data = data.set_index('time')
data = data.sort_index()
# 绘制原始数据的折线图
plt.plot(data.index, data['xiaoliang'])
plt.title("时间序列折线图")
plt.xlabel("时间")
plt.ylabel("销量")
plt.show()
# 划分训练集和测试集
train_data = data.iloc[:-6]
test_data = data.iloc[-6:]
# 训练线性模型
model = LinearRegression()
model.fit(np.arange(len(train_data)).reshape(-1, 1), train_data['xiaoliang'])
# 预测未来销量
forecast = model.predict(np.arange(len(data), len(data)+6).reshape(-1, 1))
forecast = pd.Series(forecast, index=test_data.index)
# 绘制预测结果和原始数据的图像
plt.plot(data, label='原始数据')
plt.plot(forecast, label='预测数据')
plt.legend()
plt.show()
```
主要改动:
1. 引入`LinearRegression`类。
2. 划分训练集和测试集。
3. 使用训练集训练线性模型。
4. 使用测试集进行预测,并转换成`pd.Series`格式。
5. 绘制原始数据和预测数据的折线图,并添加图例。
需要注意的是,线性模型并不一定能够很好地拟合时间序列数据,因此预测结果可能存在一定的误差。如果需要更准确的预测结果,可以考虑使用时间序列模型。
阅读全文