python matplotlib加粗边框_python

 

python matplotlib加粗边框_数据_02

 

一、创建自定义图像 figure



figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)

num:图像编号或名称,数字为编号 ,字符串为名称
figsize:指定figure的宽和高,单位为英寸;
dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80      1英寸等于2.5cm,A4纸是 21*30cm的纸张 
facecolor:背景颜色
edgecolor:边框颜色
frameon:是否显示边框



  



import matplotlib.pyplot as plt
#创建自定义图像
fig=plt.figure(figsize=(4,3),facecolor='blue')

plt.show()



python matplotlib加粗边框_数据结构与算法_03

 

 

二、画图

Series.plot()画柱状图、直方图、密度图、线形图

 

Series.plot方法的参数

python matplotlib加粗边框_数据结构与算法_04

 

DataFrame还有一些用于对列进行灵活处理的选项,例如,要将所有列都绘制到一个subplot中还是创建各自的subplot。参数如下表:

 

python matplotlib加粗边框_数据结构与算法_05

1.柱状图(kind='bar')

柱状图(bar chart)
优点:人眼对高度较敏感,直观各组数据差异性,强调个体与个体之间的比较
缺点:不适合大量的数据集数据(项数较多)
适用场景:一个维度数据比较、数据单纯性展示、排序数据展示
适用数据: 数据集不大, 二维数据


from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 雅黑字体
mpl.rcParams['axes.unicode_minus'] = False

import matplotlib.pyplot as plt
fig = plt.figure()
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']   # 雅黑字体
mpl.rcParams['axes.unicode_minus'] = False
fig.set(alpha=0.5)  # 设定图表颜色alpha参数
data_train.Survived.value_counts().plot(kind='bar')#柱状图 plots a bar graph of those who surived vs those who did not. 
plt.title(u"获救情况 (1为获救)") # puts a title on our graph
plt.ylabel(u"人数")


  

python matplotlib加粗边框_人工智能_06

 

python matplotlib加粗边框_数据结构与算法_07

python matplotlib加粗边框_python_08


sns.countplot(x='SibSp',hue='Survived',data=df)

 

python matplotlib加粗边框_数据_09

多分类累积柱状图

python matplotlib加粗边框_人工智能_10

python matplotlib加粗边框_python_11

2.直方图()

直方图(histogram)是一种可以对值频率进行离散化显示的柱状图。数据点被拆分到离散的、间隔均匀的面元中,绘制的是各面元中数据点的数量。Series.hist()。
在之后调用plot时加上参数kind='kde'即可生成一张密度图。

 

 

3.密度图(kind='kde')


data_train.Age[data_train.Pclass == 1].plot(kind = 'kde')
data_train.Age[data_train.Pclass == 2].plot(kind = 'kde')
data_train.Age[data_train.Pclass == 3].plot(kind = 'kde')
plt.xlabel('年龄')
plt.ylabel('密度')
plt.title('各等级的乘客年龄分布')
plt.legend(('头等舱','二等舱','三等舱'),loc = 'best')

  

python matplotlib加粗边框_数据结构与算法_12

4.线性图

折线图(line chart)
折线图分为 直线折线图和曲线折线图,直线折线图一般适用于离散变量,曲线折线图一般适用于连续变量。
优点: 直观反映数据变化趋势
缺点:数据集太小时显示不直观
适用场景:需要反映变化趋势,关联性。
适用数据:时间序列类数据、关联类数据(如电流跟随电压变化而变化)

python matplotlib加粗边框_python_13

python matplotlib加粗边框_数据_14

pandas的大部分绘图方法都有一个可选的ax参数,它可以是一个matplotlib的subplot对象。这是你能够在网络布局中更为灵活地处理subplot的位置。DataFrame的plot方法会在一个subplot中为各列绘制一条线,并自动创建图例


df = pd.DataFrame(np.random.randn(10, 4).cumsum(0), columns=list('ABCD'), index=np.arange(0, 100, 10))
df.plot()
plt.show()


 

画验证集的学习曲线

python matplotlib加粗边框_折线图_15

python matplotlib加粗边框_数据_16

python matplotlib加粗边框_人工智能_17

5.小提琴图


import seaborn as sns
#作小提琴图
sns.violinplot(x='Survived',y='Age',data=df)


python matplotlib加粗边框_数据_18

 

  

6.散点图

散点图(scatter plot)
优点: 直观反映数据集中情况,对离散数据线性回归等曲线预测性的拟合辅助作用
缺点:适用场景比较少
适用场景:两个维度比较(地图某地区某项数据集中分布),对离散数据进行预测时
适用数据:离散值数据

散点图(scatter plot)是观察两个一维数据序列之间的关系的有效手段。matplotlib的scatter方法是绘制散布图的主要方法。利用plt.scatter()即可轻松绘制一张简单的散布图。
而且,pandas提供了下一个能从DataFrame创建散步图矩阵的scatter_matrix函数。它还支持在对角线上放置个变量的直方图或密度图。

 

7.饼图

饼图(Pie)
优点: 直观显示各项占总体的占比,分布情况,强调整个与个体间的比较。
缺点:数据不精细,不适合分类较多的情况
适用场景:一个维度各项指标(一般不超过5个项目)占总体的占比情况,分布情况。(例如:不同状态下的车辆分布,公司内各个团队营收收入)
适用数据:具有整体意义的各项相同数据

三、子图

1.subplot

(1)均匀分图

 

python matplotlib加粗边框_数据_19

python matplotlib加粗边框_数据_20

(2)不均匀分图

python matplotlib加粗边框_数据结构与算法_21

python matplotlib加粗边框_数据_22

如果希望展示的小图的大小不相同, 应该怎么做呢?

以上面的4个小图为例, 如果把第1个小图放到第一行, 而剩下的3个小图都放到第二行.
使用plt.subplot(2,1,1)将整个图像窗口分为2行1列, 当前位置为1.
使用plt.plot([0,1],[0,1])在第1个位置创建一个小图.
plt.subplot(2,1,1)
plt.plot([0,1],[0,1])
使用plt.subplot(2,3,4)将整个图像窗口分为2行3列, 当前位置为4.
使用plt.plot([0,1],[0,2])在第4个位置创建一个小图.
plt.subplot(2,3,4)
plt.plot([0,1],[0,2])
这里需要解释一下为什么第4个位置放第2个小图. 上一步中使用plt.subplot(2,1,1)将整个图像窗口分为2行1列, 第1个小图占用了第1个位置, 也就是整个第1行. 这一步中使用plt.subplot(2,3,4)将整个图像窗口分为2行3列, 于是整个图像窗口的第1行就变成了3列, 也就是成了3个位置, 于是第2行的第1个位置是整个图像窗口的第4个位置.

使用plt.subplot(235)将整个图像窗口分为2行3列,当前位置为5. 使用plt.plot([0,1],[0,3])在第5个位置创建一个小图. 同上, 再创建plt.subplot(236).


plt.subplot(235)
plt.plot([0,1],[0,3])

plt.subplot(236)
plt.plot([0,1],[0,4])
plt.show()  # 展示


  

 

2.subplot2grid

使用plt.subplot2grid来创建第1个小图, (3,3)表示将整个图像窗口分成3行3列, (0,0)表示从第0行第0列开始作图,colspan=3表示列的跨度为3, rowspan=1表示行的跨度为1. colspan和rowspan缺省, 默认跨度为1.

使用plt.subplot2grid来创建第2个小图, (3,3)表示将整个图像窗口分成3行3列, (1,0)表示从第1行第0列开始作图,colspan=2表示列的跨度为2. 同上画出 ax3, (1,2)表示从第1行第2列开始作图,rowspan=2表示行的跨度为2. 再画一个 ax4 和 ax5, 使用默认 colspan, rowspan.


import matplotlib.pyplot as plt
plt.figure()
ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)  # stands for axes
ax1.plot([1, 2], [1, 2])
ax1.set_title('ax1_title')
ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2)
ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan=2)
ax4 = plt.subplot2grid((3, 3), (2, 0))
ax4.scatter([1, 2], [2, 2])
ax4.set_xlabel('ax4_x')
ax4.set_ylabel('ax4_y')
ax5 = plt.subplot2grid((3, 3), (2, 1))


python matplotlib加粗边框_数据结构与算法_23

3.gridspec

使用plt.subplot来作图, gs[0, :]表示这个图占第0行和所有列, gs[1, :2]表示这个图占第1行和第2列前的所有列, gs[1:, 2]表示这个图占第1行后的所有行和第2列, gs[-1, 0]表示这个图占倒数第1行和第0列, gs[-1, -2]表示这个图占倒数第1行和倒数第2列.


import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
plt.figure()
gs = gridspec.GridSpec(3, 3)
ax6 = plt.subplot(gs[0, :])
ax6.plot([0,1],[1,2])
ax7 = plt.subplot(gs[1, :2])
ax8 = plt.subplot(gs[1:, 2])
ax8.plot([0,1],[0,6])
ax9 = plt.subplot(gs[-1, 0])
ax9.scatter([0,1],[0,3])
ax10 = plt.subplot(gs[-1, -2])


python matplotlib加粗边框_python_24

4.subpplots

使用plt.subplots建立一个2行2列的图像窗口,sharex=True表示共享x轴坐标, sharey=True表示共享y轴坐标. ((ax11, ax12), (ax13, ax14))表示第1行从左至右依次放ax11和ax12, 第2行从左至右依次放ax13和ax14.


f,((ax11, ax12), (ax13, ax14)) = plt.subplots(2, 2, sharex=True, sharey=True)
ax11.scatter([1,2], [1,2])
ax14.plot([3,5],[1,2])