fontproperties=font用不了
时间: 2023-08-24 18:05:08 浏览: 68
如果您想在Matplotlib中设置字体属性,可以使用`FontProperties`对象,而不是直接使用`font`属性。以下是一个例子:
```python
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties()
font.set_family('serif')
font.set_name('Times New Roman')
font.set_size(16)
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
plt.xlabel('X Label', fontproperties=font)
plt.ylabel('Y Label', fontproperties=font)
plt.title('Title', fontproperties=font)
plt.show()
```
在这个例子中,我们创建了一个`FontProperties`对象并将其命名为`font`。然后,我们通过调用`set_family()`,`set_name()`和`set_size()`方法来设置字体的属性。最后,在调用`xlabel()`,`ylabel()`和`title()`函数时,我们将`fontproperties`参数设置为我们创建的`font`对象,以应用所需的字体属性。
相关问题
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`函数定义了误差函数。拟合结果可以直接使用线性模型计算得到,然后绘制拟合图像即可。需要注意的是,这里的时间序列数据没有考虑季节性因素,因此线性模型可能无法很好地拟合实际数据。在实际应用中,需要根据具体情况选择合适的模型和算法。
from matplotlib.font_manager import FontProperties font = FontProperties(size=14) fig = plt.figure(figsize=(10,8)) ax1 = fig.add_subplot(211) ax1.plot(pos_k) ax1.set_xlabel('正面评论LDA主题数寻优', fontproperties=font) ax2 = fig.add_subplot(212) ax2.plot(neg_k) ax2.set_xlabel('负面评论LDA主题数寻优', fontproperties=font)显示不出标题
这个问题可能是因为没有设置图表的标题。你可以尝试添加以下代码来为每个子图添加标题:
```
ax1.set_title('正面评论LDA主题数寻优', fontproperties=font)
ax2.set_title('负面评论LDA主题数寻优', fontproperties=font)
```
这个代码需要在`ax1.set_xlabel()`和`ax2.set_xlabel()`之后添加。这样做应该能够显示出图表的标题。
阅读全文