# 数据分析中的可视化-常见图形

import matplotlib.pyplot as plt import pandas as pd from pandas import Series, DataFrame

（1）单个图的绘制

plt.gcf()可以获得当前的Figure引用.但是更常用的是获取axis对象，然后调用绘图成员函数完成绘图:

axis.plot(data, linestyle='--', color='k') matplotlib中的linestyle, color等设置与matlab基本相同.

（2）创建多图

（3）调整子图的间距

```1import matplotlib.pyplot as plt
2import numpy as np
3fig, axes = plt.subplots(2,2,sharex=True, sharey=True) # 子图为2行2列，设置子图具有相同的x轴和y轴
4for i in range(2):
5for j in range(2):
6axes[i,j].hist(np.random.randn(500),bins=50, color='k',alpha=0.5)

axis内部函数

set_xticks([ticks_list])或者set_yticks([ticks_list])

set_xticklabels([ticks_label_list])或者set_yticklabels([ticks_label_list])

set_title('title_string')

set_xlabel('xlabel_string')或者set_ylabel('ylabel_string')

plt.legend(loc='best')

image.png

（4）设置刻度、标签和图例

axis内部函数

set_xticks([ticks_list])或者set_yticks([ticks_list])

set_xticklabels([ticks_label_list])或者set_yticklabels([ticks_label_list])

set_title('title_string')

set_xlabel('xlabel_string')或者set_ylabel('ylabel_string')

plt.legend(loc='best')

（5）保存图像

plt.savefig('test.png', bbox_inches='tight')

``` 1import matplotlib.pyplot as plt
2import numpy as np
3import pandas as pd
4fig = plt.figure(1)
6data_one = np.random.randn(500).cumsum()
7data_two = np.random.randn(500).cumsum()
8data_three = np.random.randn(500).cumsum()
9time = pd.date_range('2007-01-28', periods=500, freq='D')
10ax.plot(time, data_one,'r--', label='red')
11ax.plot(time, data_two, 'b.', label='blue')
12ax.plot(time, data_three, 'k-', drawstyle='steps-post', label='steps-post')
13ticks = ax.set_xticks(['2007-01-28', '2007-10-01', '2008-03-01'])
14labels = ax.set_xticklabels(['zero', 'one','two'])
15ax.set_title('test of multi-linestyles and xticks')
16plt.legend(loc='best')```

image.png

• 线型图： 除了matplotlib， pandas的Series和DataFrame都具有许多根据其自身数据组织特点来创建标准绘图的高级绘图方法。
```1import matplotlib.pyplot as plt
2import numpy as np
3import pandas as pd
4from pandas import Series, DataFrame
5s=Series(np.random.randn(100), index=np.arange(0,100))
6s.plot()
7df=DataFrame(np.random.randn(10,4).cumsum(0), columns=['A','B','C','D'], index=np.arange(0,100,10))
8df.plot()```

image.png

image.png

• 柱形图： 柱状图绘制的是x坐标对应的y取值，在plot代码中加入kind=‘bar’就可以得到垂直柱状图，‘barh’则是水平柱状图。
• 直方图： 直方图histogram是一种可以对值的频率进行离散化显示的柱状图。可以通过调用Series或者DataFrame的hist函数得到。数据点被分割到离散的，间隔均匀的面元中，绘制的是各个面元中数据点的数量。其中参数bins表示面元的单位，可以用normed设置是否进行归一化。
• 密度图： 密度图经常和直方图绘制在一起。它是通过计算可能会产生观测数据的连续概率分布的估计产生的。密度图也被称为KDE（kernel density estimate，核密度估计）。调用plot时在kind设置为‘kde’就可以生成密度图。
• 散布图： 散布图是观察两个一维数据序列之间关系的有效手段。散布图也被成为散布图矩阵，它还支持在对角线上放置各个序列的直方图或者密度图。

``` 1import pandas as pd
2from pandas import Series, DataFrame
3import matplotlib.pyplot as plt
4import numpy as np
5comp1 = np.random.normal(0,1,size=200)
6comp2 = np.random.normal(10,2,size=200)
7values = Series(np.concatenate([comp1, comp2]))
8data = Series(np.random.rand(16),index=list('abcdefghijklmnop'))
9combined = {'comp1':comp1, 'comp2':comp2}
10pd_combined = DataFrame(combined)
11fig = plt.figure()
13values.hist(bins=100, alpha=0.3, color='k', normed=True)
14values.plot(kind='kde',style='k--')
16plt.scatter(comp1,comp2)
17fig1, axes1 = plt.subplots(2,1)
18data.plot(kind='bar', ax=axes1[0], color='k', alpha=0.7)
19data.plot(kind='barh', ax=axes1[1], color='b', alpha=0.7)
20pd_combined = DataFrame(combined)
21pd.scatter_matrix(pd_combined, diagonal='kde')
22pd.scatter_matrix(pd_combined, diagonal='hist')```

image.png

image.png

image.png

image.png

434 篇文章86 人订阅

0 条评论

## 相关文章

### 【TensorFlow】理解 Estimators 和 Datasets

Google 在 2017 年 9 月 12 号的博文 Introduction to TensorFlow Datasets and Estimators 中...

1.3K8

### OpenGL ES 2.0 (iOS)[06-1]：基础纹理

Texture 在 OpenGL 里面有很多种类，但在 ES 版本中就两种——Texture_2D + Texture_CubeMap；

1792

### Python识别验证码！学会这步，百分之60的网站你基本都能识别了！

127是我们设定的阈值，像素值大于127被置成了0，小于127的被置成了255。处理后的图片变成了这样

980

1132

1936

### 自定义Interpolator

nterpolator这个东西很难进行翻译，直译过来的话是补间器的意思，它的主要作用是可以控制动画的变化速率，比如去实现一种非线性运动的动画效果。那么什么叫做非...

2097

36810

1742

### 数据可视化的10个关键术语

Format 交互方式 Interactive visualisations allow you to modify, manipulate and explo...

1917

4007