python中用作数据可视化的工具有多种,其中matplotlib最为基础。故在工具选择上,图形美观之外,操作方便即上乘。

本文着重说明常见图表用基础版matplotlib和改良版pyecharts作图间的差异

一、maplotlib

基本用法如下:

import numpy as np
import pandas as pd
from pandas import Series, DataFrame
import matplotlib.pyplot as plt
import matplotlib.finance as mpf
%matplotlib inline fig = plt.figure(figsize=(10,8)) #建立一个大小为10*8的画板
ax1 = fig.add_subplot(321) #在画板上添加3*3个画布,位置是第1个
ax2 = fig.add_subplot(3,2,2)
ax3 = fig.add_subplot(3,2,3)
ax4 = fig.add_subplot(3,2,4)
ax5 = fig.add_subplot(3,2,5)
ax6 = fig.add_subplot(3,2,6) data1 = np.random.randn(20)
x = np.arange(20) ax1.plot(data1) #作折线图
ax2.scatter(data1,data1,color='r') #作散点图
ax3.hist(data1,bins=10,alpha=0.3) #作直方图
ax4.bar(x,data1) #作柱形图
ax5.pie(np.random.randint(1,15,5),explode=[0,0,0.2,0,0]) #作饼形图
ax6.plot(x,data1,color='green') #组合图
ax6.bar(x,data1,color='k') fig,axes = plt.subplots(3,3,figsize=(20,16))
data2 = DataFrame(np.random.randn(10,5),columns = ['A','B','C','D','E'],index = np.arange(0,100,10)) data2.plot(kind='line',ax=axes[0][0])  #作折线图
data2.plot(kind = 'scatter',x = data2.index[0] ,y = data2.index[0],ax=axes[0][1])  #作散点图
data2.plot(kind='hist',ax=axes[0][2],legend=False)  #作直方图
data2.plot(kind='bar',ax=axes[1][0])  #作柱形图
data2.plot(kind='area',ax=axes[1][1],stacked = False) #面积图 train_data = np.array(data2)  
mpf.candlestick_ohlc(axes[1][2],train_data.tolist(),width=1.5,colorup='r',colordown='g')  #K线图 axim = axes[2][0].imshow(data2.values,interpolation='nearest')  #热力图
plt.colorbar(axim) plt.legend(loc = 'best')
plt.show()

可能遇到的问题:

1.axes[ ][ ]前面的代表行,后面代表列

2.散点图表示因变量随自变量而变化的大致趋势,x,y大小写有区分

3.面积图若不添加stacked = False会报错,提示每列必须得全正或全负

4.K线图至少得5列数据

更多操作:

plt.xlabel('横坐标名称')
plt.title('标题')
plt.xlim([0,20]) #添加x轴范围
ax.set_xyick([0,250,500,750,1000]) #设置x轴标签
ax.text(x,y,'text',family = '',fontsize = '') #添加文本
plt.setp(ax.get_xticklables(),viseble = False) #隐藏x轴标签,多图使用
plt.subplot_adjust(left = None,right = None,top = None,wspace = None,hspace = None) #调整子图间距
plt.axhline(y = 0,linewidth = 1,color = 'green') #添加分割线
plt.grid(True) #添加网格
plt.savefig('filepath') #保存图片

二、pyecharts

基本用法如下:

import pandas as pd
import numpy as np
from pyecharts import Page #pandas类型的数据处理
index = pd.date_range('2/1/2017',periods = 6,freq = 'M')
df1 = pd.DataFrame(np.random.randn(6),index = index)
df2 = pd.DataFrame(np.random.randn(6),index = index)
df1_value = [i[0] for i in df1.values]
df2_value = [i[0] for i in df2.values]
#print type(df1_value) 列表 #pandas类型转list类型
data = ts.get_hist_data('',start='2017-01-01')
new_data = data.ix[:,['open','close','high','low']]
train_data = np.array(new_data)
train_index = np.array(data.index) #元组列表
d = [(11,19),(12,21),(13,32),(10,20),(10,20),(10,33)]
dat = dict(d)
d1 = dat.keys()
d2 = dat.values()
#print type(d1) 列表 #列表数据
attr = ['衬衫','羊毛衫','雪纺衫','裤子','高跟鞋','袜子']
v1 = [11,12,13,10,10,10]
v2 = [19,21,32,20,20,33] from pyecharts import Bar page = Page() #实例化,同一网页按顺序展示多图
bar = Bar('bar示例图','ryana')
bar.add('test',index,df1_value,mark_point = ['average'])
bar.add('test',attr,v1,mark_line = ['max'])
page.add(bar) from pyecharts import Line line = Line('折线图示例')
#line.add('test',attr,v1,mark_point = 'average')
line.add('test',attr,v2,is_fill = True,area_opacity = 0.3) #面积图
page.add(line) from pyecharts import Pie pie = Pie('饼图示例')
#pie.add('test',attr,v1,is_label_show = True)
pie.add('test',attr,v2,radius = [40,75],is_label_show = True) #饼环图
page.add(pie) """
#组合图line+pie
from pyecharts import Grid grid = Grid()
grid.add(line, grid_right="10%")
grid.add(pie, grid_left="10%")
grid.render()
""" from pyecharts import Scatter scatter = Scatter('散点图示例')
scatter.add('test',v1,v2)
page.add(scatter) from pyecharts import HeatMap
import random x_axis = ['1a','2a','3a','4a','5a','6a','7a','8a','9a']
y_axis = ['Sat','Fri','Thu','Wed','Tue','Mon','Sun'] dataH = [[i,j,random.randint(0,50)] for i in range(9) for j in range(7)]
heatmap = HeatMap('热力图示例')
heatmap.add('test',x_axis,y_axis,dataH,is_visualmap = True,visual_text_color = "#000",visual_orient='horizontal')
page.add(heatmap) from pyecharts import Kline dataK = [[2320.26,2320.33,2287.4,3513.4],[2340.26,2310.33,2187.4,2513.4],[2329.26,2420.33,2257.4,2573.4],
[2321.26,2370.33,2187.4,3013.4],[2380.26,2220.33,2487.4,3113.4],[2350.26,2520.33,2087.4,2813.4],
[2300.26,2390.33,2187.4,2413.4]] kline = Kline('K线图示例')
kline.add('test',['2017/8/{}'.format(i+1) for i in range(7)],dataK)
page.add(kline) from pyecharts import WordCloud dataW = {'Python':55,'HBASE':49,'JAVA':72,'MongoDB':88,'SAS':39,'Spark':63} wordcloud = WordCloud('词云图例',width = 1200,height = 720)
wordcloud.add('test',dataW.keys(),dataW.values(),word_size_range = [20,80])
page.add(wordcloud) page.render(r'E:\echart.html')

参考:

pyechart : https://github.com/chenjiandongx/pyecharts/blob/master/docs/zh-cn/documentation.md

maplotlib : http://blog.csdn.net/xiaodongxiexie/article/details/53123371

数据可视化利器pyechart和matplotlib比较的更多相关文章

  1. 【python可视化系列】python数据可视化利器--pyecharts

    学可视化就跟学弹吉他一样,刚开始你会觉得自己弹出来的是噪音,也就有了在使用python可视化的时候,总说,我擦,为啥别人画的图那么溜: [python可视化系列]python数据可视化利器--pyec ...

  2. 数据可视化:绘图库-Matplotlib

    为什么要绘图? 一个图表数据的直观分析,下面先看一组北京和上海上午十一点到十二点的气温变化数据: 数据: 这里我用一段代码生成北京和上海的一个小时内每分钟的温度如下: import random co ...

  3. 数据可视化(一)-Matplotlib简易入门

    本节的内容来源:https://www.dataquest.io/mission/10/plotting-basics 本节的数据来源:https://archive.ics.uci.edu/ml/d ...

  4. d3.js:数据可视化利器之快速入门

    hello,data! 在进入d3.js之前,我们先用一个小例子回顾一下将数据可视化的基本流程. 任务 用横向柱状图来直观显示以下数据: var data = [10,15,23,78,57,29,3 ...

  5. Python数据可视化利器Matplotlib,绘图入门篇,Pyplot介绍

    Pyplot matplotlib.pyplot是一个命令型函数集合,它可以让我们像使用MATLAB一样使用matplotlib.pyplot中的每一个函数都会对画布图像作出相应的改变,如创建画布.在 ...

  6. d3.js:数据可视化利器之 交互行为:响应DOM事件

    selection.on:事件监听操作符 on()操作符可以添加或移除选择集中每个 DOM元素的事件监听函数: selection.on(type[,listener[,capture]]) 参数ty ...

  7. d3.js:数据可视化利器之 修改文档:DOM操作符

    style: CSS样式操作符 style()操作符用来设置或获取选择集中各DOM元素的CSS样式: selection.style(name[,value[,priority]]) style()操 ...

  8. python -- 数据可视化(二)

    python -- 数据可视化 一.Matplotlib 绘图 1.图形对象(图形窗口) mp.figure(窗口名称, figsize=窗口大小, dpi=分辨率, facecolor=颜色) 如果 ...

  9. 分形、分形几何、数据可视化、Python绘图

    本系列采用turtle.matplotlib.numpy这三个Python工具,以分形与计算机图像处理的经典算法为实例,通过程序和图像,来帮助读者一步步掌握Python绘图和数据可视化的方法和技巧,并 ...

随机推荐

  1. 【IOI 1994】 The Buses

    [题目链接] http://poj.org/problem?id=1167 [算法] 深度优先搜索 + 迭代加深 [代码] #include <algorithm> #include &l ...

  2. [JavaEE] DWR入门教程

    DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给 ...

  3. 最详细的CentOS 6与7对比(二):服务管理对比

    本主题将从3个角度进行对比 常见设置(CentOS 6 vs CentOS 7) 服务管理(Sysvinit vs Upstart vs Systemd) 性能测试(cpu/mem/io/oltp) ...

  4. FastDFS介绍(非原创)

    文章大纲 一.FastDFS介绍二.FastDFS安装与启动(Linux系统)三.Java客户端上传图片四.参考文章   一.FastDFS介绍 1. 什么是FastDFS FastDFS是用C语言编 ...

  5. CSS3伪元素、伪类选择器

    伪元素选择器: ::first-letter:为某个元素中的文字的首字母或第一个字使用样式. ::first-line:为某个元素的第一行文字使用样式. ::before:在某个元素之前插入一些内容. ...

  6. 在线word论文生成的方法

    下午实验室师妹问我latex转word生成的格式不行咋办.于是找了一下网上,发现了一个可以自动生成word论文的网站 https://typeset.io/formats/bmc/default-te ...

  7. 数据仓库模型建设基础及kimball建模方法总结

    观察数据的角度称之为维.决策数据市多为数据,多维数据分析是决策分析的组要内容. OLAP是在OLTP的基础上发展起来的,OLTP是以数据库为基础的,面对的是操作人员和底层管理人员,对基本数据进行查询和 ...

  8. 励志:98岁老爷爷用Windows系统自带画图软件制作的神作

    哈尔拉斯科,是一位很出名的老爷爷,他70岁才接触MS Paint(就是我们熟知的Windows自带的画图软件).他曾经是一名图形艺术家,但是之前他都是手工创作.他熟知怎么用双手进行艺术创作.但是后来, ...

  9. 国外60个专业3D模型网站

    原始链接:http://blog.sina.com.cn/s/blog_4ba3c7950100jxkh.html Today, 3D models are used in a wide variet ...

  10. 移动端的0.5px

    最近写移动端页面写的比较多,边边基本上都是用的1px,视觉上也确实有点小粗,这不闲下来啦,具体的研究了下0.5px是怎么实现的,切记,这个效果只有在手机上才能看到效果的 利用了css3的缩放效果 &l ...