python结合G2绘制精美图形

『OpenCV-Python』绘制图形 推荐使用 OpenCV 做目标检查时,我们可以通过 OpenCV 提供的图形绘制功能,将监测到的目标框起来,方便我们调试。这些功能在数据可视化、图像标注等场景中非常实用。本文可在公众号免费阅读用法都很简单,动手试试~ 阅读详情

一、简介

G2是阿里巴巴内部开放的数据可视化工具,提供丰富的图表类型,并且简单易上手,有比较完善的示例代码。其生成的图表简单漂亮,而且有JS互动显示,比较适合报告和文章插图。G2的数据来源是json格式数据。

G2绘制的图形

python的pandas库比较擅长对数据处理和分析,其DataFrame生成json也很方便。pandas自身集成了matplotlib的绘图功能,但是绘制的图形没有G2美观。

pandas 绘制的图形

二、pandas和G2结合绘图

绘制流程如下:
- 1,pandas读取mysql数据库
- 2,pandas对数据加工处理
- 3,pandas生成json数据
- 4,创建含G2内容的html,嵌入json数据
- 5,调整G2参数,并显示

下面以具体的案例来说明

1,计算收益率排名前十的专家

a,读取数据

from sqlalchemy import create_engine
import pandas as pd

sql = "select * from strategy order by pct desc"
df = pd.read_sql(sql, engine)

df['pct'] = df['pct'] * 100  #收益率转换为百分比

b,生成json数据

数据写到top10.json文件中

import json

datas = []
for ix, row in df[:10].iterrows():
    sss = {'name': row['name'], 'pct': float(row['pct'])}
    datas.append(sss)
encodejson = json.dumps(datas, ensure_ascii=False)
f = open('top10.json', 'w')
f.write(encodejson)
f.close()

c,创建html

从http://g2.alipay.com/demo/ 选取一个图表模板创建html文件, 这里选取的是双 Y 轴

*** top10.html ***

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>收益率排名TOP10</title>
    <link rel="stylesheet" type="text/css" href="https://as.alipayobjects.com/g/datavis/g2-static/0.0.8/doc.css" />
    <!--如果不需要jquery ajax 则可以不引入-->
    <script src="https://a.alipayobjects.com/jquery/jquery/1.11.1/jquery.js"></script>
    <script src="https://a.alipayobjects.com/alipay-request/3.0.3/index.js"></script>
    <!-- 引入 G2 脚本 -->
    <script src="https://as.alipayobjects.com/g/datavis/g2/1.2.2/index.js"></script>
  </head>
  <body>
  <div>&nbsp; </div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div id="c1"></div>
    <!-- G2 code start -->
    <script>
        $.getJSON('top10.json', function (data) {
              var Frame = G2.Frame;
              var frame = new Frame(data);
              var chart = new G2.Chart({
                id: 'c1',
                width: 500,
                height: 400
              });
              chart.source(frame, {

                'pct': {alias: '年化相对收益率(%)'},

              });
              // 去除 X 轴标题
              chart.axis('name', {
                title: null,
                 labels:{
                      'font-size':'6',
                      'font-weight': 'bold'  //文本粗细
                  },

              });

              chart.legend(false);// 不显示图例
              //chart.coord('rect').transpose();
              chart.interval().position('name*pct').color('name'); // 绘制层叠柱状图
              //chart.line().position('name*correct_rate').color('#5ed470').size(2).shape('smooth'); // 绘制曲线图
              //chart.point().position('name*correct_rate').color('#5ed470'); // 绘制点图
              chart.render();


                })
    </script>
    <!-- G2 code end -->
  </body>
</html>

top10.html文件和top10.json文件在一个文件夹内。
生成的图表如下(可点击交互):

src="https://dn-binger.qbox.me/2016-08-05/annual_return_rate2index_top10.html" width="500" height="450" scrolling="no">

2,计算推荐次数最多的股票

a,读取数据

from sqlalchemy import create_engine
import pandas as pd

sql = "SELECT code FROM stock "
df = pd.read_sql(sql, engine)

b,数据处理

不同的分析师对一只股票可能有重复推荐,这就需要统计每只股票出现的次数,然后让总出现次数从高往低排序。
用到了自然语言处理包nltk的FreqDist词频统计工具。

from nltk import FreqDist

codes = df['code'].get_values()
print "codes ", len(codes)
fdist = FreqDist(codes) #生成词频类
fdf = pd.DataFrame(fdist.items(), columns=['code', 'count']) #转成DataFrame
fdf.sort(columns='count', ascending=False, inplace=True)  # 排序
print "fdf ", len(fdf)

c,生成表格

创建html跟一个案例比较相似,这里我们生成markdown格式的表格。
定义一个markdown表格创建工具

"""
markdown 工具
"""

def m_create_table(df):
    """
    从pandas的DataFrame生成markdown格式表格
    :param df:
    :return:
    """
    if len(df) == 0:
        return ''

    datas = []
    head = '|'.join(df.columns)
    head = "|" + head + "|"
    datas.append(head)
    datas.append('-|-')
    for ix, row in df.iterrows():
        data = '|'.join(map(lambda x: str(x), row.get_values()))
        data = "|" + data + "|"
        datas.append(data)

    result = '\n'.join(datas)
    # print result
    return result

调用并打印显示

makeTable = m_create_table(fdf)
print makeTable

#输出

|name|code|
|-|-|
|隆基股份|601012|
|美的集团|000333|
|贵州茅台|600519|
|华策影视|300133|
|国轩高科|002074|
|网宿科技|300017|
|阳光电源|300274|
|沧州明珠|002108|
|老板电器|002508|
|保利地产|600048|

表格如下:

namecode
隆基股份601012
美的集团000333
贵州茅台600519
华策影视300133
国轩高科002074
网宿科技300017
阳光电源300274
沧州明珠002108
老板电器002508
保利地产600048

3,统计饼图

对于数据比较少的html,可以直接填入数据就能创建比较精美的图表了。
如下,只需修改data的name和value值,就能马上创建一个动态的饼图。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>饼图</title>
    <link rel="stylesheet" type="text/css" href="https://as.alipayobjects.com/g/datavis/g2-static/0.0.12/doc.css" />
    <!--如果不需要jquery ajax 则可以不引入-->
    <script src="https://a.alipayobjects.com/jquery/jquery/1.11.1/jquery.js"></script>
    <script src="https://a.alipayobjects.com/alipay-request/3.0.3/index.js"></script>
    <!-- 引入 G2 脚本 --><script src="https://as.alipayobjects.com/g/datavis/g2/1.2.6/index.js"></script>
  </head>
  <body>
    <div id="c1"></div>
    <!-- G2 code start -->
    <script>
      var data = [
        {name: '买入', value: 17776 },
        {name: '增持', value: 19890},
        {name: '中性', value: 6814},
        {name: '减持',  value: 4986},
        {name: '卖出', value: 494},
      ];
      var Stat = G2.Stat;
      var chart = new G2.Chart({
        id: 'c1',
        width: 600,
        height: 400
      });
      chart.source(data);
      // 重要:绘制饼图时,必须声明 theta 坐标系
      chart.coord('theta', {
        radius: 0.8 // 设置饼图的大小
      });
      chart.legend('bottom');
      chart.intervalStack()
        .position(Stat.summary.percent('value'))
        .color('name')
        .label('name*..percent',function(name, percent){
        percent = (percent * 100).toFixed(2) + '%';
        return name + ' ' + percent;
      });
      chart.render();
      // 设置默认选中
      var geom = chart.getGeoms()[0]; // 获取所有的图形
      var items = geom.getData(); // 获取图形对应的数据
      geom.setSelected(items[1]); // 设置选中
    </script>
    <!-- G2 code end -->
  </body>
</html>
src="https://dn-binger.qbox.me/2016-08-05/rating_fenbu.html" width="400" height="400" scrolling="no">

原文链接:http://kekefund.com/2016/08/05/pandas-and-g2/

Python基本图形绘制——绘制自己的Python蟒蛇! 前言 Python作为数据可视化的工具,具有强大的绘图功能。阅读完本节,不仅能掌握Python基本图形绘制和turtle库,还能绘制一条自己的python(译为蟒蛇)。 1 turtle库概述 turtle(海龟)库是turtle绘图体系的Python实现 ——turtle绘图体系:1969年诞生,主要用于程序设计入门 —— Python语言的标准库之一 ——入门级的图形绘制函数库 ... 阅读详情

相关推荐

Python基础:第021课——draw类绘制图形

函数的返回值是一个Rect,表示的是受影响的Surface区域。参数是线条(或填充)的颜色,参数Rect的形式是((x,y),(width,height)),表示的是所绘制矩形的区域,其中第一个元组(x,y)表示的是该矩形左上角的坐标,第二个元组(width,height)表示的是矩形的宽度和高度。原型pygame.draw.arc(Surface,color,Rect,start_angle,stop_angle,width=1)returnRect。用途用于绘制圆形。.........

acktomas的博客 8877

antV g2在vue项目中的运用

antV g2 的简单运用 G2 是一套基于图形语法理论的可视化底层引擎,以数据驱动,提供图形语法与交互语法,具有高度的易用性和扩展性。使用 G2,你可以无需关注图表各种繁琐的实现细节,一条语句即可使用 Canvas 或 SVG 构建出各种各样的可交互的统计图表。 1,安装 npm install @antv/g2 --save 成功安装完成之后,即可使用 import 或 require 进行引用。 import { Chart } from '@antv/g2'; 在绘图前我们需要为 G2 准备一个

qq_42183923的博客 1804

全面掌握G2:纯JavaScript的Canvas图表工具

本文还有配套的精品资源,点击获取 简介:G2是阿里云AntV团队开发的一个纯JavaScript图表库,利用Canvas技术实现高效的数据可视化。其设计理念将数据、图形语法和视觉编码结合,让开发者通过声明式方式构建复杂数据图表。核心特性包括灵活的图形语法系统,支持多种图表类型,并且提供交互、主题自定义功能。G2支持统计工具集成和自定义扩展,适用于动态数据和定制视觉效果的场景...

weixin_35754962的博客 1368

AntV G2的绘图流程

学习目标: 提示:这里可以添加学习目标 例如:一周掌握 Java 入门知识 学习内容: 提示:这里可以添加要学的内容 例如: 1、 搭建 Java 开发环境 2、 掌握 Java 基本语法 3、 掌握条件语句 4、 掌握循环语句 学习时间: 提示:这里可以添加计划学习的时间 例如: 1、 周一至周五晚上 7 点—晚上9点 2、 周六上午 9 点-上午 11 点 3、 周日下午 3 点-下午 6 点 学习产出: 提示:这里统计学习计划的总量 例如: 1、 技术笔记 2 遍 2、优快云 技术博客

李 克 鹏 的 博客 887

获取B站某用户更多的关注数和粉丝数

获取B站某用户更多的关注数和粉丝数 相关记录 一、 前言 B 站最多只能翻 5 页用户的关注数和粉丝数,如何能够看到更多呢。 方法我也是从网上翻来的,记载博客里,算是我研究过这个话题了。 二、需要的东西 关注数的 api https://api.bilibili.com/x/relation/followings?vmid=2884629&pn=1&ps=20&order=desc&jsonp=jsonp 关注者(粉丝)的 api https://api.bilibili.

Enderman_xiaohei的博客 4820

软件测试--用例篇(测试用例的好处、测试用例的七种设计方法、测试用例的粒度、测试用例的评价)

作为软件测试工程师,最主要的工作就是:编写测试用例,那么为什么要编写测试用例?它有什么好处?如何编写测试用例?测试用例写简单好还是复杂好?如何评价测试用例的质量? 天呐撸!能说不会吗?! 作为倾向软件测试工程师的老铁们,还是一起来学习吧! 一、编写测试用例的好处 测试用例是测试者的依据 测试用例使得工作可重复,是自动化测试的基础 补充:自动化测试的前提条件是:功能比较稳定,页面...

cherrydreamsover的博客 3734

g2 canvas 绘图不要靠近顶部_数据可视化AntV—G2让数据栩栩如生

让数据栩栩如生AntV,让数据栩栩如生随着基础科学的进步,人类拥有的硬件设备越来越先进,紧接着软件的发展人类不仅仅满足于实用,更注重体验。数据大屏可视化就是应人类对于体验的要求应运而生的。关于数据可视化的产品有很多,估计小伙伴们最为熟悉的就是百度的Echarts,Echarts经过了很长一段时间的发展,现在越来越趋于稳定,可谓是老牌强队。当然也有很多后起之秀,可谓是长江后浪推前浪。今天小编就给大家...

weixin_31090341的博客 459

innovus实战攻略 | 用setUsefulSkewMode解锁时序优化的“隐藏技能”!

就像时序优化的“瑞士军刀”,参数虽多,但掌握了分类逻辑后,用起来其实很简单!如果你有更绝的用法,欢迎在评论区分享,大家一起卷起来!简单来说,它就是时序优化的“乾坤大挪移”。通过调整触发器的时钟到达时间,把关键路径的建立时间“借”给非关键路径,从而实现全局时序收敛。别急,这个命令就是你的“时序救星”!(工具最多只能借1.2ns的裕量,防止“借过头”导致新问题!这个参数能帮你兜底!(对关键路径“下死手”,确保优化到位!(设置上限,给工具套上“紧箍咒”!(直接跳过边界,避免优化反噬!(全局管理,防止“借过头”!

weixin_50820814的博客 1355

G2 基础教程

G2 图表组成 简介 为了更好得使用 G2 进行数据可视化,我们需要了解 G2 图表的组成以及相关概念。 完整的 G2 图表组成如下图所示: 坐标轴 AXES 每个图表通常包含两个坐标轴,在直角坐标系(笛卡尔坐标系)下,分别为 x 轴和 y 轴,在极坐标轴下,则分别由角度和半径 2 个维度构成。 每个坐标轴由坐标轴线(line)、刻度线(tickLine)、刻度文本(label)、标题(title)以及网格线(grid)组成。 查看 Axis 教程获取更多信息。 图例 LEGEND 图例作为图表的辅助元素

Baimoc 9177

Java 开发 修改【冒险岛 079 私服】完整学习流程

第 1-2 天:环境搭建 + 运行原版 079 服务端,能正常登录游戏;第 3-4 天:纯配置文件修改,掌握倍率、属性、怪物、道具的修改,改出第一个「百倍经验私服」;第 5-10 天:Java 代码基础修改,掌握 Player/Skill/Monster 核心类的修改,实现技能无冷却、一刀秒怪、升级满属性;第 11-20 天:Java 代码进阶修改,掌握业务逻辑修改,实现死亡不掉经验、自动捡物、装备强化无失败;第 21-30 天。

萧曳丶 3895

N5105核显直通PVE:从黑屏到HDMI输出的完整指南

PCI直通能让虚拟机独占物理设备,但核显直通远没有独显那么轻松。Intel核显与CPU、显示输出链路的强耦合使UEFI引导、GOP驱动、驱动签名等环节都成了黑屏陷阱。在PVE虚拟化环境中,通过IOMMU开启、vfio-pci绑定、OVMF固件和Q35机型配合,可以绕过KVM检测,让Windows虚拟机正确驱动核显,从HDMI口输出画面,并解锁Intel Quick Sync硬解能力。这种方案尤其适合N5105等低功耗迷你主机,可作为客厅HTPC、本地视频硬解或依赖硬件加速的轻量工作台。本文基于N5105平台

weixin_31082403的博客 375

如何用python画组合图形_python结合G2绘制精美图形

一、简介G2是阿里巴巴内部开放的数据可视化工具,提供丰富的图表类型,并且简单易上手,有比较完善的示例代码。其生成的图表简单漂亮,而且有JS互动显示,比较适合报告和文章插图。G2的数据来源是json格式数据。G2绘制的图形python的pandas库比较擅长对数据处理和分析,其DataFrame生成json也很方便。pandas自身集成了matplotlib的绘图功能,但是绘制的图形没有G2美观。p...

weixin_39587113的博客 115

用python画漂亮图片-python结合G2绘制精美图形

一、简介G2是阿里巴巴内部开放的数据可视化工具,提供丰富的图表类型,并且简单易上手,有比较完善的示例代码。其生成的图表简单漂亮,而且有JS互动显示,比较适合报告和文章插图。G2的数据来源是json格式数据。G2绘制的图形python的pandas库比较擅长对数据处理和分析,其DataFrame生成json也很方便。pandas自身集成了matplotlib的绘图功能,但是绘制的图形没有G2美观。p...

weixin_37988176的博客 223

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之EcuM模块配置详解(上)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之EcuM模块配置详解(上)

weixin_42412049的博客 1015

【机器学习系列】一文搞懂 零知识机器学习(zkML)

位串行乘法器:实现了Booth编码优化,将乘法分解为移位-加法序列,减少部分积数量50%:模拟脉动阵列的2D网格计算,支持分块(tiling)策略优化内存层次卷积映射:提供直接卷积(行缓冲+滑动窗口)和im2col+GEMM两种硬件映射策略。

VectorShift的博客 156

python画组合图_python结合G2绘制精美图形-阿里云开发者社区

一、简介G2是阿里巴巴内部开放的数据可视化工具,提供丰富的图表类型,并且简单易上手,有比较完善的示例代码。其生成的图表简单漂亮,而且有JS互动显示,比较适合报告和文章插图。G2的数据来源是json格式数据。G2绘制的图形python的pandas库比较擅长对数据处理和分析,其DataFrame生成json也很方便。pandas自身集成了matplotlib的绘图功能,但是绘制的图形没有G2美观。p...

weixin_39611340的博客 249

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

python内置库turtle绘制有趣图形

一:绘制六边形 import turtle t = turtle.Pen() turtle.bgcolor(&quot;black&quot;) sides = 6 colors = [&quot;red&quot;, &quot;yellow&quot;, &quot;green&quot;, &quot;blue&quot;, &quot;orange&quot;, &quot;purple&

xiamoyanyulrq的博客 4万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

练习2: Python基本图形绘制 (第2周)

练习2: Python基本图形绘制 (第2周) 文章目录练习2: Python基本图形绘制 (第2周)turtle库语法总结Python蟒蛇绘制turtle正方形绘制turtle六边形绘制turtle叠边行绘制turtle风车绘制 这是python123官网上联合MOOC的Python程序设计(第10期)答案 turtle库语法总结 Python的 turtleturtleturtle 库是一个直...

qq_42582489的博客 1593

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

python用networkx画图_使用Python的networkx绘制精美网络图教程

最近因为数学建模3天速成Python,然后做了一道网络的题,要画网络图。在网上找了一些,发现都是一些很基础的丑陋红点图,并且关于网络的一些算法也没有讲,于是自己进http://networkx.github.io/学习了一下。以下仅博主自己的总结,勿认真,有错误尽情指出,大家一起交流。需要用到的module malplotlib.pyplot 和networkx正文:一、malplotlib和ne...

weixin_29526539的博客 3978

python中绘图库Matplotlib图形绘制详解

在《Matplotlib快速入门》中,作为入门示例,我们已经了解了曲线图的绘制方法,为了完整起见,本节中我们首先简单回顾下,如何在使用 绘制曲线图,同时介绍多曲线图等更复杂曲线图的绘制。里面内容很详细,是一篇很不错的文章,感谢原作者!...

Petrel__Cloud的博客 3377

Python用turtle库绘制图形——漂亮的玫瑰

本篇对文中涉及到的turtle绘图函数作了汇总,并对turtle绘图的颜色系统作了比较详细的介绍。在介绍用绘制毛笔简笔画的技法基础上,实现了用turtle绘图绘制了漂亮的玫瑰花毛笔简笔画绘制。本篇涉及锯齿形叶缘绘制,叶脉、花瓣绘制、多层叠加绘制等技巧。

hz_zhangrl的博客 1万+

python做网络图_使用Python的networkx绘制精美网络图教程

最近因为数学建模3天速成Python,然后做了一道网络的题,要画网络图。在网上找了一些,发现都是一些很基础的丑陋红点图,并且关于网络的一些算法也没有讲,于是自己进http://networkx.github.io/学习了一下。以下仅博主自己的总结,勿认真,有错误尽情指出,大家一起交流。需要用到的module malplotlib.pyplot 和networkx正文:一、malplotlib和ne...

weixin_30218733的博客 2139

干货!利用Python绘制精美网络关系图

点击上方蓝字关注我们 最近发现一个特别好用的python库,能够绘制精美的关系图,俗话说有好东西要学会分享,所以袁厨就肝了这篇文章,大家可以参考一下。一、概述 Networ...

tan45du_yuan的博客 1万+
上一篇: 大数据教你挑选分析师
下一篇: 【IOS开发】WKWebView封装APP
cbbing
博客等级 码龄20年 30粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值