python 好用的画图模块_【python好用模组-matplotlib】好用数据绘图工具,折线图、散点图、长条图都难不倒我...

嗨,大家好, 今天要来认识好用的数据绘图工具- matplotlib, 据说matplotlib的命名缘由是来自另一个程式语言matlab, 如果对matlab熟悉那对matplotlib会更快上手...

嗨,大家好,

今天要来认识好用的数据绘图工具- matplotlib,

据说matplotlib的命名缘由是来自另一个程式语言matlab,

如果对matlab熟悉那对matplotlib会更快上手

但我对matlab不熟,

直接来学习matplotlib吧

安装

matplotlib不是python的内建模组,

可能会需要另外安装(我不确定anaconda有没有帮忙装好)

安装指令:pip install matplotlib

引用模组

撰写程式前,会在程式最上方引入模组

import matplotlib.pyplot as plt

基础概念

虽然matplotlib的指令非常多,

但是最重要的就记两个指令就好:

plot()和show(),

plot()是在图形上画线(不显示在萤幕上),

show()是当我们画好图形,显示在萤幕上,

其它指令就是如何把图形画的更精美。

基础折线图

譬如说我们有x轴和y轴上的数据,

把xy轴上面的点传入plot()中,

即可画出折线图(注意传入xy的数据需一样多):

import matplotlib.pyplot as plt

xpt = [1,3,5]

ypt = [1,9,25]

plt.plot(xpt,ypt) #画线

plt.show() #显示绘製的图形

然而目前这张图非常朴素,

一般我们在做图表时,可能会想要有图表的标题,

或想要设定线段宽度、样式、颜色…等,

或是把很多条线画在同一张图里互相比较,

製作图例让人了解每条线的意思

这边就逐步介绍各项功能吧

座标轴刻度、样式设定

可以用xticks及yticks这两个指令来设定x轴及y轴的刻度,

範例:

import matplotlib.pyplot as plt

xpt = [1,3,5]

ypt = [1,9,25]

plt.plot(xpt,ypt) #画线

plt.xticks([0,5,10]) #设定x轴刻度

plt.yticks([0,10,20,50]) #设定y轴刻度

plt.show() #显示绘製的图形

用tick_params()则可以设定座标轴的刻度大小、颜色,

範例:

import matplotlib.pyplot as plt

xpt = [1,3,5]

ypt = [1,9,25]

plt.plot(xpt,ypt) #画线

plt.xticks([0,5,10]) #设定x轴刻度

plt.yticks([0,10,20,50]) #设定y轴刻度

plt.tick_params(axis='both', labelsize=60, color='green')

plt.show() #显示绘製的图形

(labelsize=60将刻度设为超大字)

标题显示

目前matplotlib暂无支援显示中文,

以下有几个重要的方法:

title: 图表标题

xlabel: x轴标题

ylabel: y轴标题

可选参数为fontsize,可以设定标题的文字大小

範例:

import matplotlib.pyplot as plt

xpt = [1,3,5]

ypt = [1,9,25]

plt.plot(xpt,ypt) #画线

plt.title("My Chart", fontsize=24) #图表标题

plt.xlabel("xValue", fontsize=16) #x轴标题

plt.ylabel("yValue", fontsize=20) #y轴标题

plt.show() #显示绘製的图形

多组数据

如果有多组数据,就在plt.plot()的参数依序输入多组数据,

例如:

import matplotlib.pyplot as plt

x = [1,2,3,4,5,6,7,8]

y_1 = [1,4,9,16,25,36,49,64]

y_2 = [1,8,27,64,125,216,343,512]

plt.plot(x,y_1,x, y_2) #画线

plt.tick_params(axis='both', labelsize=24, color='green')

plt.show() #显示绘製的图形

线条色彩、样式与图例

想要设定线条样式,

可以在plot里面设定,

底下列出常见的色彩及样式参数

字元

颜色

b

blue(蓝色)

g

green(绿色)

k

black(黑色)

r

red(红色)

w

white(白色)

y

yellow(黄色)

字元

线条样式

-

预设实线

--

虚线

-.

虚点线

:

点线

| 字元 | 标记 |

| . | 点标记|

| , | 像素标记|

| o | 圆标记|

| v | 反三角标记|

| ^ | 三角标记|

| s | 方形标记|

| p | 五角标记|

| * | 星星标记|

| + | 加号标记|

这些样式可以组合使用,

例如r-.^是红色点虚线三角标记,

g--*是绿色虚线星号标记,

範例:

import matplotlib.pyplot as plt

x = [1,2,3,4,5,6,7,8]

y_1 = [1,4,9,16,25,36,49,64]

y_2 = [1,8,27,64,125,216,343,512]

plt.plot(x,y_1,'r-.^',x, y_2, 'g--*') #画线

plt.tick_params(axis='both', labelsize=24, color='green')

plt.show() #显示绘製的图形

其实这张图画的不错了,

只是可以再加上图例说明红线跟绿线是什幺东东

图例- plt.legend()

我觉得这个语法非常特殊

範例:

import matplotlib.pyplot as plt

x = [1,2,3,4,5,6,7,8]

y_1 = [1,4,9,16,25,36,49,64]

y_2 = [1,8,27,64,125,216,343,512]

Data_1, = plt.plot(x,y_1,'r-.^',label='x_square') #画线

Data_2, = plt.plot(x, y_2, 'g--*',label='x_cube') #画线

plt.tick_params(axis='both', labelsize=24, color='green')

plt.legend(handles=[Data_1, Data_2])

plt.show() #显示绘製的图形

在plot的参数需额外设置label,

另外在这行Data_1, = …,

注意变数后面要多一个逗号

保存图档

如果想要把自己画好的图存起来,

可以使用plt.savefig()指令,

注意这个指令必须放在plt.show()之前

範例:

import matplotlib.pyplot as plt

x = [1,2,3,4,5,6,7,8]

y_1 = [1,4,9,16,25,36,49,64]

y_2 = [1,8,27,64,125,216,343,512]

Data_1, = plt.plot(x,y_1,'r-.^',label='x_square') #画线

Data_2, = plt.plot(x, y_2, 'g--*',label='x_cube') #画线

plt.tick_params(axis='both', labelsize=24, color='green')

plt.legend(handles=[Data_1, Data_2])

plt.savefig('testChart.png', bbox_inches='tight') #存档,第二个参数表示把图表外多余的空间删除

plt.show() #显示绘製的图形

绘製散点图

绘製散点图的语法跟折线图有点像,

把plt.plot()改成plt.scatter(),

但参数略有不同,plt.scatter()可选参数有s和c,

分别用来指定点的大小及颜色,範例:

(s预设20,c预设是蓝色)

import matplotlib.pyplot as plt

xpt=range(1,11)

ypt=[x**2 for x in xpt]

plt.scatter(xpt,ypt, s=40, c='green')

plt.title("Test Chart", fontsize=24) #图表标题

plt.xlabel("xValue", fontsize=16) #x轴标题

plt.ylabel("yValue", fontsize=16) #y轴标题

plt.show() #显示绘製的图形

绘製长条图

绘製长条图的语法可以用plt.bar(X, Y, width),

width表示长条图宽度

小马想到一个应用,

譬如说小明7~9月的电费支出为[531,690,326],

便可以用长条图表示:

import matplotlib.pyplot as plt

spends = [531,690,326]

X = [7,8,9]

plt.bar(X,spends, 0.35)

plt.title('Electricity Expense Table') #表格名称: 电费支出表

plt.ylabel('Monthly electricity bill') # y轴标题

plt.xticks(X,['July','August','September']) #设定x轴刻度

plt.show() #显示绘製的图形

其它补充- axes()与axis()函数

在matplotlib里面有这两个非常像的函数,

如果不明白的话读别人程式还会以为他是不是拼错字了,

所以给大家介绍介绍

axis(列表)- 设定x, y座标的範围

例子:

import matplotlib.pyplot as plt

xpt = [1,3,5]

ypt = [1,9,25]

plt.plot(xpt,ypt) #画线

plt.axis([0,20,0,50])

plt.show() #显示绘製的图形

本例将x座标的範围设在0~20,

y座标的範围设在0~50,

axes([左边位置, 下边位置, 宽, 高])- 设定图表本身的位置(左下角座标为(0,0), 右上角座标为(1,1))

可参考「参考资料2」,画出图中图的效果

範例:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6, 7]

y = [1, 3, 4, 2, 5, 8, 6]

plt.axes([0, 0, 1, 1]) #画大图

plt.plot(x,y) #画线

xpt = [1,3,5]

ypt = [1,9,25]

plt.axes([0.7, 0.2, 0.25, 0.25]) #画小图

plt.plot(xpt,ypt) #画线

plt.show() #显示绘製的图形

参考资料

(书本) Python入门迈向高手之路王者归来/ 出版社:深石/ 作者: 洪锦魁

蛮推荐这本书的,深入浅出讲解语法,跟着实作很好懂,涵盖主题也广

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值