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. LinkedHashMap做缓存

    项目上需要写一个缓存,这样就不需要频繁地访问数据库,我使用的是 //缓存 private final Map<String, JSONArray> schemaCache = new Li ...

  2. VM虚拟机-Windows

    前提:安装了vm虚拟机 一.下载win10原版镜像文件 一定要是原版,修改版的不能用. 推荐下载网址:http://www.xitongtiandi.net/win10yuanban/ 下载后放在D盘 ...

  3. java中的数组的Arrays工具类的使用

    package day04.d1.shuzu; import java.util.Arrays; /** * Arrays 工具类 * @author Administrator * */public ...

  4. Educational Codeforces Round 33

    # Who = Penalty * A B C D E F 479 arkethos 4 247   + 00:08 + 00:19 +1 00:59 +2 01:41     479  ne-leo ...

  5. 织梦忘记密码DedeCMS密码重设工具radminpass找回密码

    本工具是用于新人忘记管理员密码重设所制作,只需要将radminpass.php文件拷贝到根目录,运行“http://yousite/radminpass.php(yousite为网站域名)”,按照操作 ...

  6. (转)一个vue路由参数传递的注意点

    首先我的路由的定义 { path: '/b', name: 'B', component: resolve => require(['../pages/B.vue'], resolve) } 我 ...

  7. FAQ: SBS 2011. The Windows SBS Manager service terminated unexpectedly

    Symptoms The Windows SBS Manager service is stopped with EventID 7034 every half an hour on SBS 2011 ...

  8. TortoiseSvn问题研究(一)

    问题描述 今天在工作中遇到一个SVN方面的问题,牵扯出使用SVN这一段时间的一系列问题. 具体来说,是这样的: 上周五有上线分支,自己的分支需要merge: 很多项目小组都在开发这个项目,再往前好像也 ...

  9. paramiko模块学习笔记

    SSHClient 基于用户名密码连接 import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ss ...

  10. 给html里面的class添加一个判断语句,判断当前class是否显示(vue)

    当我们想判断这个class是否出现时,其实有很多方法, 我这个是做了一个选项卡,当点击的时候navTitle的值和循环的item的值相同时class就等于borderbottom, 这样我们点击的图层 ...