Python-matplotlib入门--基础图表的绘制(持续更新中)

通过前面几篇博客的大致内容,我们也能大致学会绘制图像,然后在我们做数据分析,统计分析的时候,我们需要用特定的图像来展示特定的数据,从而达到可视化的效果,让结果更加直观,这篇博客我将会详细介绍一下每一种图例。

实例目录:

1、线性图
2、直方图
3、条状图
4、多序列条状图
5、饼状图
6、散点图
7、箱线图
8、极线图
9、棉棒图
10、误差棒图
首先需要区分清楚概念:直方图和条形图。
条形图:条形图用长条形表示每一个类别,长条形的长度表示类别的频数,宽度表示表示类别。
直方图:直方图是一种统计报告图,形式上也是一个个的长条形,但是直方图用长条形的面积表示频数,所以长条形的高度表示频数组距频数组距,宽度表示组距,其长度和宽度均有意义。当宽度相同时,一般就用长条形长度表示频数。
直方图一般用来描述等距数据,柱状图一般用来描述名称(类别)数据或顺序数据。直观上,直方图各个长条形是衔接在一起的,表示数据间的数学关系;条形图各长条形之间留有空隙,区分不同的类。

1.线性图

这里我参考了官网的图例。

t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)
plt.plot(t, s)
plt.title("About as simple as it gets, folks")
plt.xlabel("time (s)")
plt.ylabel("voltage (mV)")
ax.grid()
plt.show()

在这里插入图片描述
这个就实现了线性图的绘制,不需要用到其他函数。但下面几种都有它对应的函数。

2.直方图

直方图用到的函数是plt.hist()函数,plt,hist()

    matplotlib.pyplot.hist(  
    x, bins=10, range=None, normed=False,   
    weights=None, cumulative=False, bottom=None,   
    histtype=u'bar', align=u'mid', orientation=u'vertical',   
    rwidth=None, log=False, color=None, label=None, stacked=False,   
    hold=None, **kwargs)  

一些常用的参数
绘制直方图
data:必选参数,绘图数据
bins:直方图的长条形数目,可选项,默认为10
normed:是否将得到的直方图向量归一化,可选项,默认为0,代表不归一化,显示频数。normed=1,表示归一化,显示频率。
facecolor:长条形的颜色
edgecolor:长条形边框的颜色
alpha:透明度

#直方图绘制
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(0)#随机种子
m,sigma = 50,5 #均值和标准差
a = np.random.normal(m,sigma,size=100)#一百个元素

#该函数参数为直方图上面的信息,最后两个参数为颜色的设置
#第二个参数为 bin:生成直方图的个数
#normed=1表示出现的概率,=0,表示出现的个数
plt.hist(a,40,normed=0, facecolor="blue", edgecolor="black", alpha=0.7)
plt.title('test')
plt.show()

在这里插入图片描述

3.柱状图

条形图用plt.bar()绘制,其中一些常用的参数:

  1. left:x轴的位置序列,一般采用arange函数产生一个序列;
  2. height:y轴的数值序列,也就是柱形图的高度,一般就是我们需要展示的数据;
  3. alpha:透明度
  4. width:为柱形图的宽度,一般这是为0.8即可;
  5. color或facecolor:柱形图填充的颜色;
  6. edgecolor:图形边缘颜色
  7. label:解释每个图像代表的含义
  8. linewidth or linewidths or lw:边缘or线的宽度
index = np.arange(5)
values = [5,3,2,4,5]
plt.bar(index,values,color='y',alpha=0.7)
plt.title('bar')
plt.xlabel("x")
plt.ylabel("y")
plt.xticks(index+0.4,['s','m','i','l','e'])#设置刻度标签
plt.show()

在这里插入图片描述
我们还可以看一个多个序列表示的柱状图:

#多序列条状图
index = np.arange(5)
values1 = [5,3,2,4,5]
values2 = [6,5,3,5,7]
values3 = [7,4,4,6,8]
b = 0.25#设置b为调控距离
plt.axis([0,5,0,10])#x轴起止,y轴起止坐标
plt.bar(index,values1,b,color='r',alpha=0.7)
plt.bar(index+b,values2,b,color='y',alpha=0.7)
plt.bar(index+2*b,values3,b,color='b',alpha=0.7)
plt.title('A bar chart',fontsize=15)#标题及字体
plt.xticks(index+b,['s','m','i','l','e'])#设置刻度标签
plt.show()

在这里插入图片描述

4.条形图

1.水平条形图
常用barh()函数,参数:barh ( bottom , width , height =0.8, left =0, ** kwargs )其中这些参数:
bottom: Bars 的垂直位置的底部边缘
width: Bars 的长度
height: bars 的高度
left: bars 左边缘 x 轴坐标值
color: bars 颜色
edgecolor: bars 边缘颜色
linewidth: bar 边缘宽度;None 表示默认宽度;0 表示不 i 绘制边缘
xerr: 若不为 None,将在 bar 图上生成 errobars
yerr: 若不为 None,将在 bar 图上生成 errobars
ecolor: 指定 errorbar 颜色
capsize: 指定 errorbar 的顶部(cap)长度
align: ‘edge’ (默认) | ‘center’:‘edge’以底部为准对齐;‘center’以 y 轴作为中心?
log: [False|True] False (默认),若为 True,使用 log 坐标

price = [39.5, 39.9, 45.4, 38.9, 33.34]
"""
绘制水平条形图方法barh
参数一:y轴
参数二:x轴
"""
plt.barh(range(5), price, height=0.7, color='steelblue', alpha=0.8)      # 从下往上画
plt.yticks(range(5), ['亚马逊', '当当网', '中国图书网', '京东', '天猫'])
plt.xlim(30,47)
plt.xlabel("价格")
plt.title("不同平台图书价格")
for x, y in enumerate(price):
    plt.text(y + 0.2, x - 0.1, '%s' % y)
plt.show()

在这里插入图片描述

5.饼图

在python中用的是plt.pie()函数,这个函数的形式如下:

def pie(x, explode=None, labels=None, colors=None, autopct=None,
        pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None,
        radius=None, counterclock=True, wedgeprops=None, textprops=None,
        center=(0, 0), frame=False, rotatelabels=False, hold=None, data=None)

想具体了解这个函数用法可以看看这个博客。下面我给出一个例子,大家可以参考一下

label_list = ["第一部分", "第二部分", "第三部分"]    # 各部分标签
size = [55, 35, 10]    # 各部分大小
color = ["red", "green", "blue"]     # 各部分颜色
explode = [0.05, 0, 0]   # 各部分突出值
"""
绘制饼图
explode:设置各部分突出
label:设置各部分标签
labeldistance:设置标签文本距圆心位置,1.1表示1.1倍半径
autopct:设置圆里面文本
shadow:设置是否有阴影
startangle:起始角度,默认从0开始逆时针转
pctdistance:设置圆内文本距圆心距离
返回值
l_text:圆内部文本,matplotlib.text.Text object
p_text:圆外部文本
"""
patches, l_text, p_text = plt.pie(size, explode=explode, colors=color, labels=label_list, labeldistance=1.1, autopct="%1.1f%%", shadow=False, startangle=90, pctdistance=0.6)
plt.axis("equal")    # 设置横轴和纵轴大小相等,这样饼才是圆的
plt.legend()
plt.show()

在这里插入图片描述

散点图

一般用plt.scatter()函数,具体函数用法以及参数,我们过多解释,可以看看这篇博客。给大家举一个具体的实例。

A1=np.array([0,0])
B1=np.array(([2,0],[0,2]))
#以 A1为均值,B1为协方差矩阵,生成正态分布的随机数
C1=np.random.multivariate_normal(A1,B1,10)
C2=np.random.multivariate_normal(A1+0.2,B1+0.2,10)
#画布的大小为长8cm高6cm
plt.figure(figsize=(8,6))
#画图吧,s表示点点的大小,c就是color嘛,marker就是点点的形状哦o,x,*><^,都可以啦
#alpha,点点的亮度,label,标签啦
plt.scatter(C1[:,0],C1[:,1],s=30,c='red',marker='o',alpha=0.5,label='C1')
plt.scatter(C2[:,0],C2[:,1],s=30,c='blue',marker='x',alpha=0.5,label='C2')
plt.title('basic scatter plot ')
plt.xlabel('variables x')
plt.ylabel('variables y')
plt.legend(loc='upper right')#这个必须有,没有你试试看
plt.show()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42370313/article/details/100892275
今日推荐