plt.title('标题', fontproperties=font) 改为使用指定的字体
时间: 2023-12-12 07:02:25 浏览: 32
如果你想要使用其他字体,可以将 `font` 变量替换为一个新的 `FontProperties` 对象,例如:
```python
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname='/path/to/font.ttf', size=14) # 指定字体和字号
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.title('标题', fontproperties=font) # 使用指定的字体
plt.show()
```
在这个例子中,`fname` 参数指定了字体文件的路径,`size` 参数指定了字号。你可以将 `fname` 替换为你想要使用的字体文件的路径,将 `size` 替换为你想要的字号。
需要注意的是,如果你使用的是 Windows 操作系统,可以使用 `fontname` 参数来指定字体名称,例如:
```python
font = FontProperties(fontname='微软雅黑', size=14)
```
这将使用系统中已安装的 "微软雅黑" 字体。如果你使用的是其他操作系统或自定义的字体,你需要提供相应的字体文件。
相关问题
select_sqli = "SELECT time,sum(xiaoliang) FROM sheji.sale where type_c='两厢车' group by time ;" cur.execute(select_sqli) data = pd.DataFrame(cur.fetchall(), columns=['time', 'xiaoliang']) for col in data.columns: for i in range(1, len(data)): if data.loc[i, col]=="--": data.loc[i, col] = data.loc[i-1, col] 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) plt.figure(figsize=(9.42,5.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('total.png',dpi=300)为什么画出的图预测的是过去的时间,请修改
在绘制图像之前,需要对 `forecast` 进行处理,将其索引改为未来的时间点,然后再与原始数据拼接起来,才能得到正确的预测结果。
下面是修改后的代码:
```python
select_sqli = "SELECT time,sum(xiaoliang) FROM sheji.sale where type_c='两厢车' group by time ;"
cur.execute(select_sqli)
data = pd.DataFrame(cur.fetchall(), columns=['time', 'xiaoliang'])
# 处理缺失值
for col in data.columns:
for i in range(1, len(data)):
if data.loc[i, col] == "--":
data.loc[i, col] = data.loc[i-1, col]
# 转换时间序列数据
data['time'] = pd.to_datetime(data['time'], format='%Y-%m')
data['xiaoliang'] = data['xiaoliang'].astype(int)
data = data.set_index('time')
# 构建模型并预测未来数据
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 = idx
# 拼接原始数据和预测数据
combined_data = pd.concat([data, forecast])
# 绘制图像
plt.figure(figsize=(9.42, 5.62))
plt.plot(combined_data, label='Combined 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.legend()
plt.savefig('total.png', dpi=300)
```
在上面的代码中,我们首先将 `forecast` 的索引设置为未来的时间点,然后使用 `concat` 函数将原始数据和预测数据拼接起来,并将其作为参数传递给了 `plot` 函数。这样就可以得到正确的预测结果了。
定义绘制涨跌幅的函数 def plot_k_line(df): fig, ax = plt.subplots(figsize=(14,8)) # 绘图窗口大小 # 获取“股票名称”列的值作为标题 title = df['name'][1] plt.title(title, fontsize=18) # 标题 # 绘制参考线 (df['close']-df['open']).plot(grid=True, color='red', label='每日涨跌(收盘价-开盘价)').axhline(y=0, color='black', lw=2) ax.legend(frameon=False) plt.xlabel('6-12月份', fontsize=14) # 横坐标 plt.ylabel('涨跌幅度', fontsize=14) #纵坐标 # 刻度标记大小 # axis 可选择参数 x,y,both plt.tick_params(axis='both',labelsize=13) # 设置横坐标主刻度为月份,并将刻度标签的格式设置为"年-月" ax.xaxis.set_major_formatter(DateFormatter('%Y-%m')) ax.tick_params(axis='x', which='minor', labelsize=8, labelrotation=45) # 设置次刻度标签的大小和旋转角度 font = fm.FontProperties(size=10, style='italic') # 设置斜体字体属性 plt.xticks(fontproperties=font) # 设置刻度标签为斜体 横坐标日期与表格中不对应,如何修改
要修改横坐标日期与表格中不对应的问题,您可以在绘制图表之前将日期格式转换为相同的格式。例如,您可以使用`pd.to_datetime()`将日期转换为统一的日期格式。以下是修改后的代码示例:
```
# 导入 datetime 模块
from datetime import datetime
# 定义绘制涨跌幅的函数
def plot_k_line(df):
fig, ax = plt.subplots(figsize=(14,8)) # 绘图窗口大小
# 获取“股票名称”列的值作为标题
title = df['name'][1]
plt.title(title, fontsize=18) # 标题
# 将日期转换为统一的格式
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
# 绘制参考线
(df['close']-df['open']).plot(grid=True, color='red', label='每日涨跌(收盘价-开盘价)').axhline(y=0, color='black', lw=2)
ax.legend(frameon=False)
plt.xlabel('6-12月份', fontsize=14) # 横坐标
plt.ylabel('涨跌幅度', fontsize=14) #纵坐标
# 刻度标记大小
# axis 可选择参数 x,y,both
plt.tick_params(axis='both',labelsize=13)
# 设置横坐标主刻度为月份,并将刻度标签的格式设置为"年-月"
ax.xaxis.set_major_formatter(DateFormatter('%Y-%m'))
ax.tick_params(axis='x', which='minor', labelsize=8, labelrotation=45) # 设置次刻度标签的大小和旋转角度
font = fm.FontProperties(size=10, style='italic') # 设置斜体字体属性
plt.xticks(fontproperties=font) # 设置刻度标签为斜体
```
在上述代码中,我们使用了`pd.to_datetime()`将`date`列中的日期格式转换为`'%Y-%m-%d'`格式,以确保它们与横坐标标签格式相同。