pandas.DataFrame.plot绘图,汉字乱码,标注

@阿贝云_免费云服务器、高防服务器、虚拟主机、免费空间、免费vps主机服务商!阿贝云一直为广大客户提供高质量云服务器、高防服务器、游戏服务器、服务器租用、虚拟空间主机、域名注册等互联网服务,我们坚持初心十年不间断提供永久免费虚拟主机、免费云服务器给学生和初创业者使用。icon-default.png?t=N7T8https://www.abeiyun.com

from pylab import *
import matplotlib.pyplot as plt
import matplotlib
from zlp_package.ghqk import my_filter, Ghqk, pd
from zlp_package.zlp_sql import get_result, execute, get_k_u
# plt.rc("font", family="Noto Sans Mono CJK TC")
# plt.rcParams['axes.unicode_minus'] = False

font = matplotlib.font_manager.FontProperties(fname='/home/zhaolp/Downloads/SimHei.ttf')

brno, date, mark='15092146', '2023-05-30', '公司'
km_zh_list, user_list=get_k_u(brno)
zh=my_filter(km_zh_list["150900937"], ghqk=Ghqk(brno, date, mark)).split(",")
def my_f1(zh, date):
    dftmp=pd.DataFrame(index=zh)
    ghqk=Ghqk(brno, date, mark)
    dftmp[ghqk.df.columns]=ghqk.df
    dftmp['date']=date
    return dftmp.fillna(0)
df=pd.concat([my_f1(zh, dd.strftime("%F")) for dd in pd.date_range('2023-01-01', date)]).groupby("date").sum()
df_str = df.index
df.index = pd.to_datetime(df.index, format = '%Y-%m-%d')
y_mc_max = df['本期余额'].max()    # 最大值的y坐标
x_mc_max = df['本期余额'].idxmax() # 最大值的x坐标
y_mc_min = df['本期余额'].min()    # 最小值的y坐标
x_mc_min = df['本期余额'].idxmin() # 最小值的x坐标

ax = df.plot(y=["本期余额", "年日均"], kind='line', figsize=(20, 8), color=['r', 'g'])
ax.set_xticks(['2023-01-01', '2023-01-15', '2023-01-31', '2023-02-15', '2023-02-28', '2023-03-15', '2023-03-31', '2023-04-15', '2023-04-30', '2023-05-15', '2023-05-30'],
              ['01-01', '01-15', '01-31', '02-15', '02-28', '03-15', '03-31', '04-15', '04-30', '05-15', '05-30'])
# ax.set_xticks(df.index[::10], df_str[::10])  ##每隔10天显示一个刻度
ax.set_xlabel('日期', fontsize=20, color='b', fontproperties=font, labelpad=20)
ax.set_ylabel('值', fontsize=20, color='r', fontproperties=font, labelpad=20)
ax.set_title("我的首秀", fontproperties=font, fontsize=30, color='r')
ax.legend(prop=font)
ax.grid()
ax.annotate(text=f"最大值{int(y_mc_max)}@{x_mc_max.strftime('%m-%d')}", xy=(x_mc_max, y_mc_max), xytext=(x_mc_max, y_mc_max+8000000),
            fontproperties=font, size=12, color='r', arrowprops=dict(arrowstyle="->", color='r'))
ax.annotate(text=f"最小值{int(y_mc_min)}@{x_mc_min.strftime('%m-%d')}", xy=(x_mc_min, y_mc_min), xytext=(x_mc_min, y_mc_min-8000000),
            fontproperties=font, size=12, color='r', arrowprops=dict(arrowstyle="->", color='r'))

plt.show()
 

  • 33
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值