数据分析中的可视化-常见图形
来源:互联网 发布:pdf转换图片软件 编辑:程序博客网 时间:2024/06/05 03:32
工具: matplotlib, pandas
import matplotlib.pyplot as plt
import pandas as pd
from pandas import Series, DataFrame
图的创建:
(1)单个图的绘制
创建图对象: fig = plt.figure() # 设置figsize参数可以确保图片保存到磁盘时具备一定的大小和纵横比.
创建轴对象: axis = fig.add_subplot()
plt.gcf()可以获得当前的Figure引用.但是更常用的是获取axis对象,然后调用绘图成员函数完成绘图:
axis.plot(data, linestyle='--', color='k')
matplotlib中的linestyle, color等设置与matlab基本相同.
(2)创建多图
可以用axis = fig.add_subplot(m,n,k)的方式定义增加的子图。但是更简单的方法是:
fig, axes = plt.subplots(m,n) # m行n列的多图矩阵
这句命令可以创建一个新的figure,并且axes就是一个含有已创建的subplot对象的Numpy数组,可以用调用数组元素的方式对subplot进行索引。还可以指定subplots的其他参数,例如使得子图之间具有相同的x轴或者y轴(否则matplotlib会自动缩放各子图的坐标轴界限)
(3)调整子图的间距
利用subplots_adjust函数可以调整各个子图之间的间距和图像大小。它的定义如下:subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)
附上例子:
import matplotlib.pyplot as pltimport numpy as npfig, axes = plt.subplots(2,2,sharex=True, sharey=True) # 子图为2行2列,设置子图具有相同的x轴和y轴for i in range(2): for j in range(2): axes[i,j].hist(np.random.randn(500),bins=50, color='k',alpha=0.5)plt.subplots_adjust(wspace=0, hspace=0) # 将子图之间的间距收缩到了0
(4)设置刻度、标签和图例
这几个操作都需要调用axis对象的相关函数实现:
(5)保存图像
用plt.savefig()可以保存图像。plt.savefig('test.png', bbox_inches='tight')
示例代码:
import matplotlib.pyplot as pltimport numpy as npimport pandas as pdfig = plt.figure(1)ax = fig.add_subplot(1,1,1)data_one = np.random.randn(500).cumsum()data_two = np.random.randn(500).cumsum()data_three = np.random.randn(500).cumsum()time = pd.date_range('2007-01-28', periods=500, freq='D')ax.plot(time, data_one,'r--', label='red')ax.plot(time, data_two, 'b.', label='blue')ax.plot(time, data_three, 'k-', drawstyle='steps-post', label='steps-post')ticks = ax.set_xticks(['2007-01-28', '2007-10-01', '2008-03-01'])labels = ax.set_xticklabels(['zero', 'one','two'])ax.set_title('test of multi-linestyles and xticks')plt.legend(loc='best')
数据分析中的常用图形:
- 线型图:
除了matplotlib, pandas的Series和DataFrame都具有许多根据其自身数据组织特点来创建标准绘图的高级绘图方法。
import matplotlib.pyplot as pltimport numpy as npimport pandas as pdfrom pandas import Series, DataFrames=Series(np.random.randn(100), index=np.arange(0,100))s.plot()df=DataFrame(np.random.randn(10,4).cumsum(0), columns=['A','B','C','D'], index=np.arange(0,100,10))df.plot()
- 柱形图:
柱状图绘制的是x坐标对应的y取值,在plot代码中加入kind=‘bar’就可以得到垂直柱状图,‘barh’则是水平柱状图。 - 直方图:
直方图histogram是一种可以对值的频率进行离散化显示的柱状图。可以通过调用Series或者DataFrame的hist函数得到。数据点被分割到离散的,间隔均匀的面元中,绘制的是各个面元中数据点的数量。其中参数bins表示面元的单位,可以用normed设置是否进行归一化。 - 密度图:
密度图经常和直方图绘制在一起。它是通过计算可能会产生观测数据的连续概率分布的估计产生的。密度图也被称为KDE(kernel density estimate,核密度估计)。调用plot时在kind设置为‘kde’就可以生成密度图。 - 散布图:
散布图是观察两个一维数据序列之间关系的有效手段。散布图也被成为散布图矩阵,它还支持在对角线上放置各个序列的直方图或者密度图。
附上代码:
import pandas as pdfrom pandas import Series, DataFrameimport matplotlib.pyplot as pltimport numpy as npcomp1 = np.random.normal(0,1,size=200)comp2 = np.random.normal(10,2,size=200)values = Series(np.concatenate([comp1, comp2]))data = Series(np.random.rand(16), index=list('abcdefghijklmnop'))combined = {'comp1':comp1, 'comp2':comp2}pd_combined = DataFrame(combined)fig = plt.figure()ax1 = fig.add_subplot(2,1,1)values.hist(bins=100, alpha=0.3, color='k', normed=True)values.plot(kind='kde',style='k--')ax2 = fig.add_subplot(2,1,2)plt.scatter(comp1,comp2)fig1, axes1 = plt.subplots(2,1)data.plot(kind='bar', ax=axes1[0], color='k', alpha=0.7)data.plot(kind='barh', ax=axes1[1], color='b', alpha=0.7)pd_combined = DataFrame(combined)pd.scatter_matrix(pd_combined, diagonal='kde')pd.scatter_matrix(pd_combined, diagonal='hist')
柱状图:
图中(上)是直方图和密度图, (下)是散点图:
散布图, 对角线是数据的密度图:
散布图, 对角线是直方图:
- 数据分析中的可视化-常见图形
- 数据可视化中的图形选择
- 可视化设计数据分析统计图形框架总结
- matplotlib 可视化 —— 绘制常见图形
- 数据分析-可视化数据分析
- 数据可视化工具分析
- 数据可视化之常见图表
- 可视化中的数据
- 数据分析之--可视化分析
- 图形绘图库 科学数据可视化
- Matlab数据的可视化 -- 三维特殊图形
- Matlab数据的可视化 -- 三维网格图形
- Qt 数据可视化之3D图形
- 【 D3.js 入门系列 --- 9 】 常见可视化图形
- 【数据可视化】可视分析流程
- 数据分析-可视化挖掘读书笔记
- Spark-数据分析可视化Zeppelin
- 12306泄露数据可视化分析
- python爬虫: 爬一个英语学习网站
- sphinx语音识别(1)-基本介绍
- Pyinstaller打包生成可执行程序
- 多人脸部\肢体\手部识别OpenPose安装
- 【java笔试系列五】List、Set和Map
- 数据分析中的可视化-常见图形
- Tableau连接kylin
- Oracle 12c ORA-28040 没有匹配的认证协议
- 硬连接与软连接
- request获取请求头消息
- Eigen demo与文件读写 汇总
- 30岁程序员困境:转行or跳槽?如何做才不会被替代?
- 经典游戏——贪吃蛇
- 复杂json转list