Matplotlib画图浅析(1)

2019-02-27  本文已影响0人  Demafic

Matplotlib画图浅析

标签(空格分隔): python


安装与导入

首先,安装库Matplotlib不必再说了
安装完成后,引入相关模块,开始学习Matplotlib

import numpy as np
import matplotlib.pyplot as plt

Scatter散点图

散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。
用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。散点图将序列显示为一组点。值由点在图表中的位置表示。类别由图表中的不同标记表示。散点图通常用于比较跨类别的聚合数据。
首先生成1024个符合标准正态分布的随机数(均值为0,方差为1)作为数据集,并图像化为散点图。

import numpy as np
import matplotlib.pyplot as plt
n=1024
#数据集的大小
x = np.random.normal(0,1,n)
y = np.random.normal(0,1,n)
t = np.arctan2(y,x)
t是产生颜色值

数据集准备好了,我们要用函数Scatter来产生生成散点图了。
首先来看看,这个函数的参数有哪些:

plt.scatter(x,y,s=20,c='b',marker='o',cmap=None,norm=None,vmin=None,vmax=None,alpha=None,linewidths=None,verts=None,hold=None,**kwargs)

s:点的大小
c:色彩或颜色序列
marker:点的形状
cmap:colormap,颜色图谱,具体可以看这里
norm:数据亮度
vmin,vmax:亮度设置,若norm已经使用,则该参数无效
alpha:透明度,0-1
linewidths:线的粗细
那么我们这里的代码如下:

plt.scatter(x, y, s=75, c=t, alpha=.5)

plt.xlim(-1.5, 1.5)
#x轴上的数值范围
plt.xticks(())  
#不显示x轴上的数字
plt.ylim(-1.5, 1.5)
plt.yticks(())  
plt.show()

结果若下图所示:

散点图.png

Bar柱状图

分别在X轴上方和下方生成12个数据,分别为0-11,Y轴上为均匀分布的随机数字,直接上代码:

import numpy as np
import matplotlib.pyplot as plt

n =12
x = np.arange(n)
y1 = (1-x/float(n))*np.random.uniform(0.5, 1.0, n)
#float是数字或数字的字符串表示形式转换为与它等效的有符号浮点数
#np.random.uniform(0.5, 1.0, n):在0.5到1.0的均匀分布中随机取n个数字
y2 = (1-x/float(n))*np.random.uniform(0.5, 1.0, n)

plt.bar(x,+y1)
#柱子向上
plt.bar(x,-y2)
#柱子向下

plt.xlim(-.5, n)
plt.xticks(())
plt.ylim(-1.25, 1.25)
plt.yticks(())

这里再讲一下代码中的函数np.arange(start, stop[, step]),这里startstop,决定上下界,sstep为步长,当你只传入一个参数时,只表示stopstart默认为0。

但是上面的代码运行出来,只是简单的柱形图:


初始柱状图.png

我们还可以设置一下柱子的颜色,以及标注数字。

更改颜色

首先,我们来看一下bar这个函数的参数:

plt.bar(left, height, alpha=1, width=0.8, color=, edgecolor=, label=, lw=3)

left:x轴的位置序列
height:y轴的数值序列
alpha:透明度
width:柱子宽度
color,facecolor:柱形图填充颜色
edgecolor:图形边缘颜色
label:解释每个图像的数值
lw:边缘线的宽度

首先我们先来改变一下柱子的填充颜色:

plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')

当然这里的facecolor我们也可以用自带的。

添加数据

接下来,我们是用plt.text()来在柱子上方或者下方添加数据。
先来解释一下这个函数吧。

matplotlib.pyplot.text(x, y, s, fontdict=None, withdash=False, **kwargs)

x,y:坐标
s:要标注的字符串
fontdict:设置文字字体,传入的是字典,比如fontdict={'size':16,'color='r''}
withdash:boolean, optional, default: False

for p, q in zip(x, y1):
    # ha: horizontal alignment
    # va: vertical alignment
    plt.text(p+0.01, q + 0.05, '%.2f' % p, ha='center', va='bottom')

for p, q in zip(x, y2):
    # ha: horizontal alignment
    # va: vertical alignment
    plt.text(p+0.01 , -q - 0.05, '%.2f' % q, ha='center', va='top')

其中:
ha='center':横向居中
va='bottom':纵向底部对齐
%.2f:数字精度到后两位小数
结果如下图:

结果_柱状图.png

这里还要说一下函数zip()
这个函数将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回这些元组组成的列表。
直接来看个例子吧:

a = [1,2,3]
b = [4,5,6]
zipped = zip(a,b)

最后输出的是:

[(1,4),(2,5),(3,6)]

最后希望大家来关注这个公众号啊:ForOnePiece
一起来学习python啊

foronepiece.JPG
上一篇下一篇

猜你喜欢

热点阅读