Python第三方库之openpyxl(11)

Python第三方库之openpyxl(11)

Stock Charts(股票图)

在工作表上按特定顺序排列的列或行中的数据可以在股票图表中绘制。正如其名称所暗示的,股票图表通常被用来说明股价的波动。然而,这张图表也可以用于科学数据。例如,你可以用一个股票图表来表示每日或每年的温度波动。您必须按照正确的顺序组织您的数据,以创建股票图表。

在工作表中组织股票图表数据是非常重要的。例如,为了创建一个简单的高低收盘价的股票图表,您应该按照这个顺序将您的数据以高、低和接近的形式排列为列标题。

尽管股票图表是一种独特的类型,但各种类型只是特定格式选项的快捷方式:

1.high-low-close本质上是一个没有线条的折线图,并且标记为XYZ。它也会使hiLoLines设置为True

2.open-high-low-close是一个高低近距离的图表,每个数据点的标记都是XZZ和updownline。

可以通过将股票图表与卷的条形图相结合来增加卷。

from datetime import date

from openpyxl import Workbook

from openpyxl.chart import (
    BarChart,
    StockChart,
    Reference,
    Series,
)
from openpyxl.chart.axis import DateAxis, ChartLines
from openpyxl.chart.updown_bars import UpDownBars

wb = Workbook()
ws = wb.active

rows = [
   [‘Date‘,      ‘Volume‘,‘Open‘, ‘High‘, ‘Low‘, ‘Close‘],
   [‘2015-01-01‘, 20000,    26.2, 27.20, 23.49, 25.45,  ],
   [‘2015-01-02‘, 10000,    25.45, 25.03, 19.55, 23.05, ],
   [‘2015-01-03‘, 15000,    23.05, 24.46, 20.03, 22.42, ],
   [‘2015-01-04‘, 2000,     22.42, 23.97, 20.07, 21.90, ],
   [‘2015-01-05‘, 12000,    21.9, 23.65, 19.50, 21.51,  ],
]

for row in rows:
    ws.append(row)

# High-low-close
c1 = StockChart()
labels = Reference(ws, min_col=1, min_row=2, max_row=6)
data = Reference(ws, min_col=4, max_col=6, min_row=1, max_row=6)
c1.add_data(data, titles_from_data=True)
c1.set_categories(labels)
for s in c1.series:
    s.graphicalProperties.line.noFill = True
# marker for close
s.marker.symbol = "dot"
s.marker.size = 5
c1.title = "High-low-close"
c1.hiLowLines = ChartLines()

# Excel is broken and needs a cache of values in order to display hiLoLines :-/
from openpyxl.chart.data_source import NumData, NumVal
pts = [NumVal(idx=i) for i in range(len(data) - 1)]
cache = NumData(pt=pts)
c1.series[-1].val.numRef.numCache = cache

ws.add_chart(c1, "A10")

# Open-high-low-close
c2 = StockChart()
data = Reference(ws, min_col=3, max_col=6, min_row=1, max_row=6)
c2.add_data(data, titles_from_data=True)
c2.set_categories(labels)
for s in c2.series:
    s.graphicalProperties.line.noFill = True
c2.hiLowLines = ChartLines()
c2.upDownBars = UpDownBars()
c2.title = "Open-high-low-close"

# add dummy cache
c2.series[-1].val.numRef.numCache = cache

ws.add_chart(c2, "G10")

# Create bar chart for volume

bar = BarChart()
data =  Reference(ws, min_col=2, min_row=1, max_row=6)
bar.add_data(data, titles_from_data=True)
bar.set_categories(labels)

from copy import deepcopy

# Volume-high-low-close
b1 = deepcopy(bar)
c3 = deepcopy(c1)
c3.y_axis.majorGridlines = None
c3.y_axis.title = "Price"
b1.y_axis.axId = 20
b1.z_axis = c3.y_axis
b1.y_axis.crosses = "max"
b1 += c3

c3.title = "High low close volume"

ws.add_chart(b1, "A27")

## Volume-open-high-low-close
b2 = deepcopy(bar)
c4 = deepcopy(c2)
c4.y_axis.majorGridlines = None
c4.y_axis.title = "Price"
b2.y_axis.axId = 20
b2.z_axis = c4.y_axis
b2.y_axis.crosses = "max"
b2 += c4

ws.add_chart(b2, "G27")

wb.save("stock.xlsx")

注意:由于Excel high-low lines的缺陷,只有在至少一个数据系列有一些虚拟值时才会显示出来。这可以通过以下的攻击来完成:

from openpyxl.chart.data_source import NumData, NumVal
pts = [NumVal(idx=i) for i in range(len(data) - 1)]
cache = NumData(pt=pts)
c1.series[-1].val.numRef.numCache = cache

运行结果

原文地址:https://www.cnblogs.com/Keys819/p/9315632.html

时间: 2024-11-08 14:13:29

Python第三方库之openpyxl(11)的相关文章

Python第三方库之openpyxl(4)

Python第三方库之openpyxl(4) 2D柱状图 在柱状图中,值被绘制成水平条或竖列. 垂直.水平和堆叠柱状图. 注意:以下设置影响不同的图表类型 1.在垂直和水平条形图之间切换,分别设置为col或bar 2.当使用堆叠图表时,overlap需要设置为100 3.如果条是水平的,x轴和y轴要反转 from openpyxl import Workbook from openpyxl.chart import BarChart, Series, Reference wb = Workboo

Python第三方库之openpyxl(2)

Python第三方库之openpyxl(2) 简单的使用 写一个工作簿 >>> from openpyxl import Workbook >>> from openpyxl.compat import range >>> from openpyxl.utils import get_column_letter >>> >>> wb = Workbook() >>> >>> des

Python第三方库之openpyxl(12)

Python第三方库之openpyxl(12) 地面天气图 在工作表上的列或行中安排的数据可以在一个表中绘制.当您想要在两组数据之间找到最佳组合时,一个表面图表是有用的.正如在地形图中一样,颜色和图案表示的区域是相同的值域.默认情况下,所有的表面图都是3D的.通过设置rotation 和perspective来创建2D线框和轮廓图. from openpyxl import Workbook from openpyxl.chart import ( SurfaceChart, SurfaceCh

【Python基础】下载python第三方库文件.wheel安装python第三方库

python常见第三方库在Windows安装报错解决方案 最近在Windows下开发,发现很多第三方库在Windows上的兼容性都不是很好,通过谷哥度娘后,发现一个非官方的临时解决方案, 先贴上地址:Unofficial Windows Binaries for Python Extension Packages 1.安装方法 找到库后下载对应使用的Python版本的文件下载,进入轮子文件夹下 打开cmd命令行,使用 pip install xxx.whl 安装. 2.附支持的第三库 1 pen

python第三方库系列之十七--multiprocessing库

说到并发,我们想到多线程和多进程. 那到底使用多进程还是多线程呢?这得看情况.我们的程序一般分为: 1)耗网络的(有很大一部分时间是在网络交互): 2)耗CPU的(得充分利用多核) 在第一种情况,时间大部分被网络延时占用,所以使用多线程和多进程都差不多. 在第二种情况,时间的长短由CPU是否被充分利用决定,看<python第三方库系列之十二--多线程threading库>可知,多线程会出现锁机制,所以多进程更胜一筹,充分利用了CPU,节省了时间. 以下是一个多进程例子: #coding=utf

python第三方库学习之xlrd读取Excel文件

因为经常会涉及到从Excel表中导数据,所以就学习了python的xlrd来读取excel中的数据. 1.xlrd的安装 xlrd是python的第三方库,所以是需要自己安装的,可以在python的官网http://pypi.python.org/pypi/xlrd下载该模块来安装,也可以通过其他手段,比如easy_install或者pip啥的,我已经安装好pip所以就用最懒的方式来安装了pip install xlrd来安装. 2.分析excel文件的层级对象 要读取excel的数据,就要了解

python第三方库系列之十四--集群化部署定时任务apscheduler库

如果将定时任务部署在一台服务器上,那么这个定时任务就是整个系统的单点,这台服务器出现故障的话会影响服务.对于可以冗余的任务(重复运行不影响服务),可以部署在多台服务器上,让他们同时执行,这样就可以很简单的避免单点.但是如果任务不允许冗余,最多只能有一台服务器执行任务,那么前面的方法显然行不通.本篇文章就向大家介绍如何避免这种互斥任务的单点问题,最后再介绍一下基于APScheduler的分布式定时任务框架,这个框架是通过多个项目的实践总结而成的. 对于运行在同一台服务器上的两个进程,可以通过加锁实

Python 第三方库xlrd读取Excel代码

Python 第三方库xlrd读取Excel代码: 安装xlrd 安装xlrd,只需运行setup即可,另外你也可以直接解压缩到你的project中,也可以直接用 xlrd的API 获取Excel,这里称之为work book open_workbook(file_name) 获取指定的Sheet,有两种方式 sheet = xls.sheet_by_index(sheet_no) sheet = xls.sheet_by_name(sheet_name) 获取整行和整列的值(数组) sheet

使用Pycharm安装Python第三方库

除了使用easy_insatll和pip工具安装Python第三方库外还可以使用pycharm安装Python第三方库,步骤如下: 1.打开pycharm,点击File,再点击settings 2.点击settings之后再点击project下面的project Interpreter将会出现如下界面: 3.接下来点击上面界面右上角的"+"将会出现如下界面:然后在搜索框中搜索需要安装的第三方库(此处搜索requests)然后点击界面左下角的Install Package进行安装即可.