常见的图表类型
直方图:适用比较数据之间的多少;折线图:反映一组数据的变化趋势;条形图:显示各个项目之间的比较情况 和直方图有类似的作用;饼图;散点图:显示若干数据系列中各数值之间的关系 类似X,Y轴,判读两变量之间是否存在某种关联;箱型图:识别异常值方面有一定的优越性
直方图与条形图的具体区别如下:
首先,条形图用条形的长度表示各类别频率快的多少 其宽度是固定的 直方图是用面积表示各组频数的多少 矩形的高度表示每一组的频数和频率,,宽度则表示各组的组距,因此其高度与宽度均有意义。其次,由于分组数据具有连续性 所以直方图的各矩形通常都是连续排列的 而条形图则是分开排列的 最后 条形图主要用于展示分类数据 而直方图则主要用于展示数据型数据。
1通过subplot创建单个子图
#分成2*2的矩阵区域 plt.subplot(221) plt.plot(nums,nums) plt.subplot(222) plt.plot(nums,-nums) plt.subplot(212) plt.plot(nums,nums**2) plt.show()
2通过subplots创建多个子图
#生成包含1~100之间所有整数数组 nums = np.arange(1,101) #分成2*2的矩阵区域 返回子图数组axes fig,axes = plt.subplots(2,2) axes[0,0].plot(nums,nums)plt.show()
3通过add_subplot添加和选中子图
fig = plt.figure() #添加子图 fig.add_subplot(2,2,1) fig.add_subplot(2,2,2) fig.add_subplot(2,2,4) fig.add_subplot(2,2,3) #在子图上作图 random_arr = np.random.randn(100) #默认是在最后一次使用subplot的位置上作图 即编号为3的位置 plt.plot(random_arr)plt.show()
4添加各类标签
图表添加标签和图例的常用函数
title():设置当前轴的标题
xlabel():设置当前图形X轴的标签名称
ylabel():设置当前图形Y轴的标签名称
xticks():指定X轴刻度的数目与取值
yticks():指定Y轴刻度的数目与取值
xlim():设置或获取当前图形X轴的范围
ylim():设置或获取的当前图形Y轴的范围
legend():在轴上放置一个图例
import numpy as np data = np.arange(0,1.1,0.01) plt.title('Title') plt.xlabel('x') plt.ylabel('y') #设置x和y轴的刻度 plt.xticks([0,0.5,1]) plt.yticks([0,0.5,1.0]) plt.plot(data,data**2,lineStyle='-.') plt.plot(data,data**3) plt.legend(['y=x^2','y=x^3'])plt.show(
在适用Matplotlib绘图是 如果要设置的图表标题中有无中文字符,则会编程方格子而无法正确显示
解决方案:
#windos下 from pylab import mpl mpl.reParams['font,sans-serif'] = ['SimHei'] #mac下 from pylab import mpl mpl.rcParams['font.sans-serif'] = ['Arial Unicode MS']
另外由于字体封盖后 ,会导致坐标轴中的部分字符无法正常显示 这是需要更改axes unicode_minus参数
mpl.rcParams['axes.unicode_minus'] = False
常见生成多种图表的函数
bar绘制条形图 pie:绘制饼图 scatter:绘制散点图 plot:绘制折线图 boxplot:绘制箱型图 hist:绘制直方图 barh 绘制水平条形图
直方图:
plt.hist(np.random.randn(100),bins=8,color='g',alpha=0.7)plt.show()
散点图:
x = np.arange(51) #创建另一个数组 表示很y轴数据 y = np.random.rand(51)*10 plt.scatter(x,y,marker='p') plt.show()
案例
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] #正常显示中文标签 area = jn['山东省,济宁市'].values plt.figure(figsize=(12,6)) x_num = range(0,len(area)) y_dis = [i+0.3 for i in x_num] plt.bar(x_num,area,colors='g',width=.3,label='总面积',labels='') plt.show()