本文含 5835 字,33图表截屏建议阅读 30 分钟0引言

有读者说〖PyEcharts〗一贴里的图美如画,但是版本是 pyecharts v0.5,用现在 v1.0 来运行会出错,建议我再写篇 pyecharts v1.0 的。我最不喜欢让读者失望,这不我就来了。

用 v1.0 来运行 v0.5 的代码是肯定会报错的,v0.5 和 v1 间不兼容,v1 是一个全新的版本。首先来回顾 v0.5 的方法总结。

PyEcharts v0.5 方法总结

对 pyecharts 中的所有原件,都是先创建 (可以带些必要属性,比如标题和尺寸),再用 add 方法添加额外属性。其通用化流程为

object = Object( 必要属性 )

object.add( 额外属性 )

在画图之前,你应该对那些原件可以干嘛有个大概印象,比如 Kline 是画 K 线图,Heatmap 是画热力图,WordCloud 是图词云图等等。对于那些装饰原件所需的必要属性和额外属性,上官网一查便知,跟着例子看理解更快。

画多个坐标系用 Grid 对象;叠加多个原件用 Overlap 对象;随着时间轴展示不同时点的数据关系用 Timeline 对象,等等。

首先用 pip 安装 pyecharts

pip install pyecharts

引入 pyecharts 并打印出它的版本

import pyecharts as pyeprint('pyecharts: %s' % pye.__version__)
pyecharts: 1

本文首先对比 pyecharts v0.5 和 v1.0 的区别,之后举三个从简单到复杂的例子来学习 v1.0 的用法。

1v0.5 Vs v1.0引入基本元件

在 v0.5 中,引入 Line (线)、Kline (K 线)、Bar (柱状图)、Pie (饼状图)、Grid (多坐标系)、Overlap (叠加对象)、Timeline (时间轴轮播图)、TreeMap (树状图) 和 WordCloud (词云图) 的代码如下:

from pyechartsimport Line, Kline, Pie,        Grid, Overlap, Timeline,        TreeMap, WordCloud

在 v1.0 中,引入它们(除了 Overlap)的代码如下:

from pyecharts.charts import Line, Kline, Pie,        Grid, Timeline,        TreeMap, WordCloud

在 v1.0 中,我们从 pyecharts.charts 中引入元件,而不是从 pyecharts 引入。此外,v1.0 已经没有用于组合元件的 Overlap 了,它有一种更简单的组合方法。对于两个元件,K 线 kline 和线 line,v0.5 和 v1.0 的代码如下:

v0.5:需要先创建一个 Overlap 对象,再把 kline 和 line 一个个添加进去。

overlap = Overlap()

overlap.add(kline)

overlap.add(line)

v1.0:每个元件都有 overlap() 函数,可以另外元件,比如先创建 kline 再添加 line.

kline.overlap(line)

一切皆配置

在 pyecharts v1.0 中,一切皆配置(options)。配置项有两种:全局配置项系列配置项

全局配置项有以下 16 小项:

系列配置项有以下 14 小项:

配置项越细就能画出更多细节。在后面几节我们会重点说明,尤其是全局配置项,它可通过 set_global_options 方法来设置。

引入 pyecharts 里的 options 代码如下:

from pyecharts import options as opts

1K 线图数据

首先用 YahooFinancials API 来下载外汇的三年半历史数据,安装该 API 用一行代码:

pip install yahoofinancials

数据的描述如下

  • 起始日:2016-01-01

  • 终止日:2019-05-13

  • 四个外汇:欧元美元、美元日元、美元人民币,英镑美元

其中货币用的不是市场常见格式,比如「欧元美元」用 EURUSD=X,而不是 EURUSD,而「美元日元」用 JPY=X 而不是 USDJPY

下面代码就是从 API 获取数据:

该 API 返回结果 FX_daily 是「字典」格式,样子非常丑陋,感受一下。

数据样子虽丑,但还满齐全,画 K 线需要的开盘价 (open)、最高价 (high)、最低价 (low)、收盘价 (close) 都有。将上面的「原始数据」转换成 DataFrame,代码如下:

第 3 行完全是为了 YahooFinancial 里面的输入格式准备的。如果 Asset 是加密货币,直接用其股票代码;如果 Asset 是汇率,一般参数写成 EURUSD 或 USDJPY

  • 如果是 EURUSD,转换成 EURUSD=X

  • 如果是 USDJPY,转换成 JPY=X

第 6 行定义好开盘价、收盘价、最低价和最高价的标签。

第 7 行获取出一个「字典」格式的数据。

第 8, 9 行用列表解析式 (list comprehension) 将日期和价格获取出来。

第 11 到 13 行定义一个 DataFrame

  • 值为第 9 行得到的 price 列表

  • 行标签为第 8 行得到的 index 列表

  • 列标签为第 6 行定义好的 columns 列表

处理过后的数据格式美如画,看看 USDCNY。

curr = 'USDCNY'data = data_converter( FX_daily, curr, 'FX' )data.head(3).append(data.tail(3))

PyEcharts v0.5

PyEcharts 0.5 里画 K 线用到 Kline对象,除此之外我们添加最高价和最低价两条线 Line 对象,再用 Overlap 对象来「叠加」它们。

第 1-2 行获取日期和汇率。

第 4 行创建 K 线对象 Kline,设置好标题 "xxx Chart" 和位置 center。第 5-6 行在 Kline 上添加属性

  • 图例:'K-Line',

  • x 坐标轴数据:日期

  • y 坐标轴数据:一定要按 [开盘值, 收盘值, 最低值, 最高值] 的顺序,之前处理数据特意按这个顺序设定 DataFrame 的列标签的

  • x 坐标轴可拉伸True

  • 图例位置:右边

  • 图例排序:竖直

  • 图例文字大小:10

第 8 行创建折线对象 Line。第 9-13 行在 Line 上添加两条折线,一条是最高价,一条是最低价。

第 14 行创建叠加对象 Overlap。第 15-16 行在 Overlap 上分别添加之前的 Kline 和 Line,这样就把所有对象整合在一起了。

第 17 行如果被运行,该动态图被生成到 USDCNY Chart.html 网页文件里;如果没被运行,该动态图将显示在 Jupyter Notebook 中。

PyEcharts 1.0

PyEcharts 1.0 里画 K 线用到 Kline 对象,除此之外我们添加最高价和最低价两条线 Line 对象,然后直接把两条线添加到 K 线上去。

需要把日期转成 'Y/m/d' 格式,在转成列表形式。在 v1.0 中,所有数据都需要转成列表形式。

第 2 行用 Kline() 构造函数生成 K 线对象,然后

  • 用 add_xaxis() 来修饰 x 轴(第 3 行)传入日期列表 

  • 用 add_yaxis() 来修饰 y 轴(第 4 行)传入价格列表

  • 用 set_global_opts() 来设置全局配置(第 5-16 行),主要配置包括:

    • y 轴可缩放,且颜色交错(第 6-12 行)

    • x 轴可缩放(第 13 行)

    • 设置标题(第 14 行)

    • 数据局域缩放(第 15 行)

第 20 行用 Line() 构造函数生成线对象,然后

  • 用 add_xaxis() 来修饰 x 轴(第 21 行)传入日期列表 

  • 用 add_yaxis() 来修饰 y 轴(第 22-29 行)传入最高价列表

  • 用 add_yaxis() 来修饰 y 轴(第 30-37 行)传入最低价列表

  • 用 set_global_opts() 来设置全局配置,主要设置数据局域缩放(第 38 行)

在修饰 y 轴时,我们还设置了线的宽度和透明度、已经不打印出 y 轴对应的图示。

最后将 K 线两条线组合在一起,在 notebook 里展现 (render_notebook)。

在 v1.0 中,通用代码长得以下这个样子

obj = (

Object(...)

.add_xaxis(...)

.add_yaxis(...)

.set_global_options(...)

)

其中 Object 可以是任何常见元件,比如 Kline,Line 和 Bar 等等。三点省略号 ... 就代表各种配置了,具体是什么那就要读文档了。

2股价 K 线图 + 折线图数据

本小节使用 5 个股票数据,描述如下:

  • 5 只股票:AAPL, JD, BABA, FB, GS

  • 1 年时期:从 2018-02-26 到 2019-02-26

再加上同时期的标准普尔 500 指数 (SPX),和恐慌指数 (VIX)。数据如下:

stock_data = pd.read_csv( '1Y Stock Data.csv',                            parse_dates=[0],                           dayfirst=True )stock_data.head().append(stock_data.tail())

data = pd.read_csv( 'S&P500.csv',                      index_col=0,                     parse_dates=True,                     dayfirst=True )spx = data[['Adj Close']].loc['2018-02-26':'2019-02-26']spx.head(3).append(spx.tail(3))

data = pd.read_csv( 'VIX.csv',                      index_col=0,                     parse_dates=True,                     dayfirst=True )vix = data[['Adj Close']].loc['2018-02-26':'2019-02-26']vix.head(3).append(vix.tail(3))

PyEcharts v0.5

我们想把苹果股票的 K 线图,和 SPX 和 VIX 折线图放在一起看。如果再用 Overlap 来叠加它们会显得图很乱,这时可以借用 pyecharts 里的 Grid 对象,它是将上面三个图放在三个坐标系中。

代码如下:

第 1-5 行用 code 获取股票数据,并获取日期和价格。为了画 K 线,价格数组的列必须按 pyecharts 里 API 要求的顺序 - [开盘价, 收盘价, 最低价, 最高价]。

第 6 -7 行创建 Kline 对象 (标题放左边),并添加 x 轴数据、y 轴数据和“允许横轴拉伸”。

第 10 -12 行创建 Line 对象 (标题为 SPX,位置离顶 55%) 并起名为 line1,再添加若干属性,比如 y 轴范围、标识最小值、允许横轴拉伸。最关键的是 datazoom_xaxis_index=[2,1,0],就说伸缩功能控制三个轴,AAPL 一个,SPX 一个,VIX 一个。这样拉伸 x 轴三幅子图可以同时动,非常酷!

第 15 -18 行创建 Line 对象 (标题为 VIX,位置离顶 75%) 并起名为 line2,再添加若干属性。

第 20 行创建 Grid 对象,宽 1000,高 600 (这些数值是不断尝试看效果设置的)。

第 20-23 行将三幅图加在 Grid 中,关键点是如何设置里面的 grid_top 和 grid_bottom 里的百分数而使得图看起来好看,这个没有标准的,不停地尝试到你最终满意为止。本例中 AAPL 占了 5% 到 50% 的位置,SPX 占了 55% 到 70% 的位置,VIX 占了 75% 到 90% 的位置 (还有 10% 位置留给了拉缩轴)。

第 24 行如果被运行,该动态图被生成到 APPL&VIX.html 网页文件里;如果没被运行,该动态图将显示在 Jupyter Notebook 中。

从图上可以看到在 2018 年底 SPX 和 VIX 同时到达最低点和最高点,对应的苹果 K 线看,在那一点前后苹果股价有一个大跌和大涨。

PyEcharts v1.0

直接上代码。

日期和 OLHC 价格所有数据都需要转成列表形式。

用 Kline() 构造函数生成 K 线对象上节已经讲过,需要注意的是第 21 行中的 xaxis_index=[0,1,2],这个设置太关键了。本图含三个子图

  1. 苹果股票的 K 线图(index 0)

  2. 标普 500 的折线图 (index 1)

  3. 恐慌指数的折线图 (index 2)

上面设置是 index为 1 和 2 的两幅图的数据局部伸缩跟着 index 0 那幅图,这样就实现了用一根 x 轴的 slider 可以任意缩放三幅图的数据。

用 Line() 构造函数生成线对象上节已经讲过,需要注意的是第 34 和 54 行,用 MarkPointOpts 选项标识出 SPX 的最小值和 VIX 的最大值。

第 57 行用 Grid() 构造函数来生成网格对象 grid_chart,用来组合上面的三幅图。

接下来一个个加上 AAPL K 线(第 69-72 行)、 SPX 折线(第 73-76 行)和 VIX 折线(第 77-80 行),注意里面 GridOpts 选项里的位置参数。

最后(第 82 行)在 notebook 里展现 grid_chart。

3股价 K 线图 + 交易量柱状图数据

本小节使用标准普尔 500 指数 (SPX) 在 2018-02-26 到 2019-02-26 的数据。

PyEcharts v1.0

首先整理一下数据,比如将它们转换成列表形式,等等。

date = pd.to_datetime(data.index).strftime('%Y/%m/%d').tolist()price = data[['Open','Close','Low','High']].values.tolist()close = data['Close']volume = data['Volume'].values.tolist()

先用 Kline() 构建 K 线,这里面的内容最丰富。

重点:

第 7 行 - 添加用 Hex 字符串表示的红和绿两种颜色,对应着 K线涨和跌的颜色。

第 22-37 行 - 添加两个「数据区域缩放」功能,一个看的到(用鼠标拉缩图最下面的 slider),一个看不到(用鼠标直接在图中拉缩),并且设置 xaxis_index =[0,1],表示用 K 线图(index 0)来控制柱状图(index 1)。

第 39-46 行 - 将两幅图的提示框合并在一起(第 41 行这个设置太牛逼)。

第 57-67 行 - 坐标轴指示器配置和区域选择组件配置使得数据和轴可以一起联动。

再用 Line() 构建两条移动平均线,没什么可说的,用 pandas 里面的 rolling() 函数计算了 MA5 和 MA20。

再用 Bar() 构建交易量柱状图,注意第 112-115 行代码,这些设置为了不显示柱状图的 x 轴上的信息。

最后将 K 线图、两条移动均线图和交易量柱状图组合。

看效果吧。

4总结

太累了不想总结了,对 pyecharts v1.0 记着一点就行了:

一切皆配置(options),细节都在里面。

其他的都可以查文档,或者在函数中按“shift + tab”来查看有那些参数。

pyecharts x轴字体大小调整_这应该是最通俗易懂的PyEcharts的操作指南!相关推荐

  1. pyecharts x轴字体大小调整_大家很喜欢用的可视化神器——Pyecharts|可视化系列07...

    pyecharts简介 pyecharts是基于前端可视化框架echarts的Python可视化库.该库让我们在Python里也可以充分体验到快速出图和丰富交互的数据可视化体验. echarts主要开 ...

  2. pyecharts x轴字体大小调整_pyecharts 柱状图基础篇#学习笔记#

    2020年初,很久没有用过pyecharts的我由于工作原因,安装了新版pyecharts之后,以前的pyecharts代码报错了.搜索之后才发现,我安装的是不兼容旧版本的新版. 空闲的时间,把新版e ...

  3. pyecharts x轴字体大小调整_PyEcharts实战指南

    PyEcharts Author:王圣元 From:王的机器 本文含 5835 字,33图表截屏建议阅读 30 分钟0引言 有读者说[PyEcharts]一贴里的图美如画,但是版本是 pyechart ...

  4. pyecharts x轴字体大小调整_pyecharts极简入门教程

    导读 数据可视化是整个数据分析流程中的关键环节,甚至有着一图定成败的关键性地位.前期,陆续推出了matplotlib和seaborn详细入门教程,对于常规的数据探索和基本图表制作是足够的,但二者的一个 ...

  5. Android全局修改字体大小,Android 仿微信全局字体大小调整

    image 目录 一.前言 二.效果预览 三.实现步骤 1.自定义字体调整控件 2.滑动按钮改变当前页面预览字体大小 3.返回时,保存放大倍数并重启应用 4.初始化应用时配置字体放大倍数. 四.Dem ...

  6. Eclipse设置:背景与字体大小和xml文件中字体大小调整

    Eclipse中代码编辑背景颜色修改:代码编辑界面默认颜色为白色.对于长期使用电脑编程的人来说,白色很刺激我们的眼睛,所以改变workspace的背景色,可以使眼睛舒服一些.设置方法如下:1.打开wi ...

  7. Pycharm 和 Vs code 字体大小调整(Ctrl + 鼠标滚轮实现)

    Pycharm 每次都需要去设置里调整字体,很麻烦,所以也可以设置常用的Ctrl + 鼠标滚轮调整 字体缩小 File ->setting ->Keymap ->在搜寻框中输入dec ...

  8. python怎么把字体变大_Pycharm 字体大小调整设置的方法实现

    一.pycharm字体放大的设置 File ->setting -> Keymap ->在搜寻框中输入increase ->Increase Font Size(双击) -&g ...

  9. JetBrains产品字体大小调整

    JetBrains产品字体大小调整 前言: 1.打开编译器 2.在文件中 选择设置. 3.进入设置界面(如下) 一.整体界面字体大小调整 二.调整编译器代码的字体大小 前言: 1.打开编译器 2.在文 ...

最新文章

  1. 第十六届全国大学生智能车竞赛华南赛区竞赛事宜的通知
  2. vue click事件冒泡,默认行为
  3. java基本数据类型和包装类相互转换
  4. 不要重新发明轮子_是否重新发明轮子
  5. Nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分...
  6. MSF(Metaspolit)复现MS12-020蓝屏漏洞
  7. java ojdbc14 查询数据表,Oracle10g JDBC ojdbc14 DATE类型hibernate查询时分秒问题
  8. Oracle function语法
  9. Typora安装主题方法
  10. 电路 常见的数据线接口
  11. kafka单条消息太大引起的线上故障
  12. 微信公众平台接口调试工具json格式不对怎么搞_微信支付、支付宝最全接入指引,看完立刻就可以上手!...
  13. android sdcard 不存在,安卓手机真机运行时找不到sdcard?
  14. java pdf与ofd文件相互转换
  15. python中encode和decode使用讲解与演示
  16. phpstudy提示80端口被system占用
  17. springboot整合autopoi-web文件导出Excel,使用注解配置一多
  18. NAS入门之——My Cloud EX2+未入网的路由器局域网组网
  19. python控制浮点数输出的位数
  20. 科罗拉多州立大学计算机科学,科罗拉多州立大学本科什么专业好

热门文章

  1. 小游戏活动策划(全)
  2. DELPHI学习笔记1
  3. 强行删除mac中的文件
  4. centos php5-curl,Centos5 下 安装php的 curl 扩展
  5. mysql意见反馈表设计_一个基于PHP和MySQL的意见反馈模块的设计和实现
  6. 网络安全 — SASE — Overview
  7. 数据挖掘-3.Pandas基础
  8. Combinatorial Games
  9. ubuntu 用pidgin 聊qq 方法
  10. 如何由Xubuntu桌面系统还原至Ubuntu系统?