您的位置:首页 > 编程语言 > PHP开发

数据分析之Matplotlib绘图-01

2017-10-30 19:33 561 查看

01-图片的灰度化处理

(1)最大值法
使转化后的R,G,B的值等于转化前的3个值中的最大的一个,即:
R=G=B=max(R,G,B)
这种转化的灰度图亮度很高
im_data1 = im_data.max(axis = 2)

(2)平均值法
使转化后的R,G,B的值等于转化前的3个的平均值,即:
R=G=B=(R+G+B)/3
这种方法产生的灰度图像比较柔和。
im_data2 = im_data.mean(axis=-1)

(3)加权平均法
按照一定值对R,G,B的值加权平均。
#红绿蓝的权重
a = np.array([0.299,0.587,0.114])
#red*0.299+green*0.587+blue*0.114
#矩阵乘法
im_data3 = np.dot(im_data,a)


02-Matplotlib基础知识

Matplotlib中的基本图表包括的元素

Matplotlib中的基本图表包括的元素

1. x轴和y轴

1. 水平和垂直的轴线

1. x轴和y轴刻度

1. 刻度标示坐标轴的分隔,包括最小刻度和最大刻度

1. x轴和y轴刻度标签

1. 表示特定坐标轴的值

1. 绘图区域

1. 实际绘图的区域

2.

画曲线

一条曲线
x = np.arange(0.0,6.0,0.01)
plt.plot(x, x**2)
plt.show()

多条曲线
x = np.arange(1, 5)
plt.plot(x, x*1.5, x, x*3.0, x, x/3.0)
plt.show()


网格线

设置grid参数(参数与plot函数相同)
lw代表linewidth,线的粗细
alpha表示线的明暗程度

# 使用子图显示不同网格线对比
fig  = plt.figure(figsize=(20,3))

x = np.linspace(0, 5, 100)

# 使用默认网格设置
ax1 = fig.add_subplot(131)
ax1.plot(x, x**2, x, x**3,lw=2)
ax1.grid(True) # 显式网格线

# 对网格线进行设置
ax2 = fig.add_subplot(132)
ax2.plot(x, x**2, x, x**4, lw=2)
ax2.grid(color='r', alpha=0.5, linestyle='dashed', linewidth=0.5) # grid函数中用与plot函数同样的参数设置网格线
# 对网格线进行设置
ax3 = fig.add_subplot(133)
ax3.plot(x, x**2, x, x**4, lw=2)
ax3.grid(color='r', alpha=0.5, linestyle='-.', linewidth=0.5) # grid函数中用与plot函数同样的参数设置网格线


坐标轴界限axis方法设置

x = np.arange(1, 5)
plt.plot(x, x*1.5, x, x*3.0, x, x/3.0)
# plt.axis() # shows the current axis limits values;如果axis方法没有任何参数,则返回当前坐标轴的上下限
# (1.0, 4.0, 0.0, 12.0)
# plt.axis([0, 15, -5, 13]) # set new axes limits;axis方法中有参数,设置坐标轴的上下限;参数顺序为[xmin, xmax, ymin, ymax]
plt.axis(xmax=5,ymax=23) # 可使用xmax,ymax参数
plt.show()

设置紧凑型坐标轴
x = np.arange(1, 5)
plt.plot(x, x*1.5, x, x*3.0, x, x/3.0)
plt.axis('tight') # 紧凑型坐标轴
plt.show()

plt除了axis方法设置坐标轴范围,还可以通过xlim,ylim设置坐标轴范围
x = np.arange(1, 5)
plt.plot(x, x*1.5, x, x*3.0, x, x/3.0)
plt.xlim([0, 5]) # ylim([ymin, ymax])
plt.ylim([-1, 13]) # xlim([xmin, xmax])
plt.show()


坐标轴标签

plt.plot([1, 3, 2, 4])
plt.xlabel('This is the X axis')
plt.ylabel('This is the Y axis')
plt.show()


坐标轴标题

plt.plot([1, 3, 2, 4])
plt.title('Simple plot')
plt.show()


图例legend

legend方法
两种传参方法:
【推荐使用】在plot函数中增加label参数
在legend方法中传入字符串列表

方法一:
x = np.arange(1, 5)
plt.plot(x, x*1.5, label='Normal') # 在plot函数中增加label参数
plt.plot(x, x*3.0, label='Fast')
plt.plot(x, x/3.0, label='Slow')
plt.legend()
plt.show()

方法二:
x = np.arange(1, 5)
plt.plot(x, x*1.5)
plt.plot(x, x*3.0)
plt.plot(x, x/3.0)
plt.legend(['Normal', 'Fast', 'Slow']) # 在legend方法中传入字符串列表
plt.show()


ncol参数控制图例中有几列

x = np.arange(1, 5)
plt.plot(x, x*1.5, label='Normal')
plt.plot(x, x*3.0, label='Fast')
plt.plot(x, x/3.0, label='Slow')
plt.legend(loc=0, ncol=2) # ncol控制图例中有几列
plt.show()


line style

plt.plot(np.random.randn(1000).cumsum(), linestyle = ':',marker = '.', label='one')
plt.plot(np.random.randn(1000).cumsum(), 'r--', label='two')
plt.plot(np.random.randn(1000).cumsum(), 'b.', label='three')
plt.legend(loc='best') # loc='best'
plt.show()


图片保存

filename
含有文件路径的字符串或Python的文件型对象。图像格式由文件扩展名推断得出,例如,.pdf推断出PDF,.png推断出PNG (“png”、“pdf”、“svg”、“ps”、“eps”……)
dpi
图像分辨率(每英寸点数),默认为100
facecolor
图像的背景色,默认为“w”(白色)

x = np.random.randn(1000).cumsum()
fig = plt.figure(figsize = (10,3))

splt = fig.add_subplot(111)
splt.plot(x)

fig.savefig(filename = "filena.eps",dpi = 100,facecolor = 'g')


03-设置plot的风格和样式

1.点和线的样式。

- 颜色

参数color或c

五种定义颜色值的方式

别名
color='r'

合法的HTML颜色名
color = 'red'

HTML十六进制字符串
color = '#eeefff'

归一化到[0, 1]的RGB元组
color = (0.3, 0.3, 0.4)

灰度
color = (0.1)


透明度

# 透明度
y = np.arange(1, 3)
plt.plot(y, c="red", alpha=0.1);    # 设置透明度
plt.plot(y+1, c="red", alpha=0.5);
plt.plot(y+2, c="red", alpha=0.9);


背景色

设置背景色,通过plt.subplot()方法传入facecolor参数,来设置坐标轴的背景色

plt.subplot(facecolor='cyan');
plt.plot(np.random.randn(10),np.arange(1,11))


线型

线型

线宽

不同宽度破折线

点型

多参数连用

更多点和线的设置

在一条语句中多个曲线进行设置

三种设置方式

2.X,Y轴坐标的刻度。

xticks()和yticks()方法

x = [5, 3, 7, 2, 4, 1]
plt.plot(x);
plt.xticks(range(len(x)), ['a', 'b', 'c', 'd', 'e', 'f']); # 传入位置和标签参数,以修改坐标轴刻度
plt.yticks(range(1, 8, 2));
plt.show()


面向对象方法

set_xticks、set_yticks、set_xticklabels、set_yticklabels方法

fig = plt.figure(figsize=(10, 4))
ax = fig.add_subplot(111)

x = np.linspace(0, 5, 100)

ax.plot(x, x**2, x, x**3, lw=2)

ax.set_xticks([1, 2, 3, 4, 5])
ax.set_xticklabels(['a','b','c','d','e'], fontsize=18)

yticks = [0, 50, 100, 150]
ax.set_yticks(yticks)
ax.set_yticklabels([y for y in yticks], fontsize=18); # use LaTeX formatted labels


正弦余弦:LaTex语法,用π等表达式在图表上写上希腊字母

x = np.arange(-np.pi,np.pi,0.01)
plt.figure(figsize=(12,9))
plt.plot(x,np.sin(x),x,np.cos(x))

plt.axis([x.min()-1,x.max()+1,-1.2,1.2])

#xticks:参数一刻度,参数二,对应刻度上的值
plt.xticks(np.arange(-np.pi,np.pi+1,np.pi/2),
['$-\delta$','$-\pi$/2','0','$\pi$/2','$\pi$'],size = 20)

plt.yticks([-1,0,1],['min','0','max'],size = 20)

plt.show()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: