首页 > 编程语言 >Python 通过 akshare 轻松绘制股票中国平安K线图

Python 通过 akshare 轻松绘制股票中国平安K线图

时间:2023-12-10 22:15:23浏览次数:72  
标签:线图 plt Python 30 df3 high values akshare ax

想通过 Python 和 akshare 绘制 K线图,网上找了很多代码,放在 Pycharm 中都是无法正常运行绘制的,于是自己整理了下并调试成功。

环境:

python3.9(miniconda3)、Pycharm、Win10

需要用的模块或者工具库:

akshare(1.11.91)、pandas(2.1.1)、numpy(1.26.2)、matplotlib(3.8.2)、mplfinance(0.12.10b0)

绘制K线图流程如下:

  1. 获取中国平安数据

    def getStoneData():
        pingan = ak.stock_zh_a_daily(symbol="sh601318", adjust="qfq")
        df3 = pingan.reset_index().iloc[-30:, :6]  # 取过去30天数据
        df3 = df3.dropna(how='any').reset_index(drop=True)  # 去除空值且从零开始编号索引
        df3 = df3.sort_values(by='date', ascending=True)
        print(df3.info())
    
        # 均线数据
        df3['5'] = df3.close.rolling(5).mean()
        df3['10'] = df3.close.rolling(10).mean()
    
    
        print(df3.tail())
        return df3
    

    通过 akshare 获取数据如下:

    ************<class 'pandas.core.frame.DataFrame'>
    RangeIndex: 30 entries, 0 to 29
    Data columns (total 6 columns):
     #   Column  Non-Null Count  Dtype  
    ---  ------  --------------  -----  
     0   index   30 non-null     int64  
     1   date    30 non-null     object 
     2   open    30 non-null     float64
     3   high    30 non-null     float64
     4   low     30 non-null     float64
     5   close   30 non-null     float64
    dtypes: float64(4), int64(1), object(1)
    memory usage: 1.5+ KB
    None
        index        date   open   high    low  close       5      10
    25   4011  2023-12-04  40.85  41.27  40.31  40.38  40.924  41.801
    26   4012  2023-12-05  40.12  40.17  39.51  39.53  40.496  41.447
    27   4013  2023-12-06  39.50  39.75  39.29  39.53  40.252  41.127
    28   4014  2023-12-07  39.36  39.72  38.88  39.34  39.960  40.756
    29   4015  2023-12-08  39.25  39.63  39.19  39.19  39.594  40.406
    
  2. 绘制K线图

    def drawKLine(df3):
        plt.style.use("ggplot")
        fig, ax = plt.subplots(1, 1, figsize=(8, 3), dpi=200)
        # 绘制 K线
        candlestick2_ohlc(ax,
                          opens=df3['open'].values,
                          highs=df3['high'].values,
                          lows=df3['low'].values,
                          closes=df3['close'].values,
                          width=0.75, colorup="r", colordown="g")
    
        # 显示最高点和最低点
        ax.text(df3.high.idxmax(), df3.high.max(), s=df3.high.max(), fontsize=8)
        ax.text(df3.high.idxmin(), df3.high.min() - 2, s=df3.high.min(), fontsize=8)
        # 显示中文
        plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
    
        ax.set_facecolor("white")
        ax.set_title("中国平安")
    
        # 画均线
        plt.plot(df3['5'].values, alpha=0.5, label='MA5')
        plt.plot(df3['10'].values, alpha=0.5, label='MA10')
    
        ax.legend(facecolor='white', edgecolor='white', fontsize=6)
        # date 为 object 数据类型,通过 pd.to_datetime将该列数据转换为时间类型,即datetime
        df3.date = pd.to_datetime(df3.date, format='%Y-%m-%d')
        # 修改x轴坐标
        plt.xticks(ticks=np.arange(0, len(df3)), labels=df3.date.dt.strftime('%Y-%m-%d').to_numpy())
        plt.xticks(rotation=90, size=8)
        # 修改y轴坐标
        ax.yaxis.set_major_formatter(FormatStrFormatter('%.2f'))
        # x轴坐标显示不全,整理
        plt.subplots_adjust(bottom=0.25)
        plt.show()
    

    股票中国平安的 K线绘制如下:


源码已上传 ,需要获取源码,可以在微信后台回复“绘制K线”关键字获取源码

标签:线图,plt,Python,30,df3,high,values,akshare,ax
From: https://www.cnblogs.com/liyiran/p/17893325.html

相关文章

  • 统信UOS/麒麟KYLINOS上安装python特定版本
    原文链接:统信UOS/麒麟KYLINOS上安装python特定版本hello,大家好啊!Python作为一种广泛使用的编程语言,其版本多样性给开发者带来了既便利又挑战的情况。不同的项目可能需要不同版本的Python,而在统信UOS/麒麟KYLINOS这样的操作系统上,如何灵活地管理和切换Python版本,就成为了一个值得探......
  • python高级之函数的参数
    函数的参数形参与实参介绍函数的参数分为形式参数和实际参数,简称形参和实参:形参即在定义函数时,括号内声明的参数。形参本质就是一个变量名,用来接收外部传来的值。实参即在调用函数时,括号内传入的值,值可以是常量、变量、表达式或三者的组合:#1:实参是常量res=my_min(1,2)#2......
  • Java开发者的Python快速实战指南:探索向量数据库之文本搜索
    前言如果说Python是跟随我的步伐学习的话,我觉得我在日常开发方面已经没有太大的问题了。然而,由于我没有Python开发经验,我思考着应该写些什么内容。我回想起学习Java时的学习路线,直接操作数据库是其中一项重要内容,无论使用哪种编程语言,与数据库的交互都是不可避免的。然而,直接操作M......
  • Python列表常见方法
    '''1.len()计算列表长度len(list)-->returnlen_number2.sorted()排序sorted()-->升序sorted(reverse=False)-->降序3.sum()计算列表所有元素的和值sum(list)-->returnsum_number4.max()查找最大值......
  • Python中级之异常处理
    异常处理引自:【6.0】Python中级之异常处理-Chimengmeng-博客园(cnblogs.com)【一】什么是异常异常是程序运行时可能发生的错误或意外情况。在Python中,异常是一种对象,表示程序执行期间发生的错误。当出现异常时,程序的正常流程会被中断,而是跳转到异常处理流程。【二】......
  • 如何更好的学习Python
    学习python需要有哪些思维任何编程语言时,培养一些特定的思维方式是非常有帮助的。下面是一些学习Python所需的思维方式:问题解决思维:学会将问题分解成更小、更可管理的部分,然后逐步解决每个部分。善于提问,学会将问题清晰地表达,有助于获取更好的帮助和解决方案。抽象思维......
  • 代码随想训练营第六十天(Python)| 84. 柱状图中最大的矩形
    84.柱状图中最大的矩形1、双指针classSolution:deflargestRectangleArea(self,heights:List[int])->int:n=len(heights)#左右第一个小于i的下标min_l,min_r=[0]*n,[0]*nres=0min_l[0]=-1......
  • #yyds干货盘点#深入了解Python类与面向对象编程
    类与对象的概念1.什么是类?类是一种用户自定义的数据类型,用于描述对象的属性和行为。它是对象的模板,定义了对象的结构。2.创建类使用class关键字来创建类。示范如何定义一个类,包括类名、属性和方法的定义。classDog:def__init__(self,name,breed):self.name=nam......
  • python算法
    目录: 回溯算法:  回溯算法:一般模型:results=[]defbacktrack(路径,选择列表):passif路径结束,满足约束条件:results.append(路径)#保存结果return#注意,返回到上一个分支,而不是返回结果,退出回溯if路径结束,不满足约束条件:......
  • Python进阶补充
    变量的进阶引用的概念:1、定义变量的时候,变量和数据,都会在内存中开辟空间2、变量所对应的内存空间中存储的是数据所在内存的地址3、变量中保存数据地址的操作,就称为引用4、Python中所有数据的传递,都是引用,即“地址”5、只有赋......