matplotlib的简单使用(数据可视化)

​​​​​​​matplotlib简单绘制不同类型的表格_wolfwalker的博客-CSDN博客

此文为matplotlib简单绘制不同类型表格的拓展

目录

一、入门(简单使用matplotlib创建我们的图像)

二、图像与子图

创建子图的快捷方法

 多子图属性

共享坐标轴

 三、图标元素

颜色,标记与线型

常用颜色

常用线形

常用标记

简单的实例应用

 折线图样式

标题、标签、刻度和图像 

简单应用 

标注 

 几何图形的绘制

 绘制不同类型的表格请参考这篇博客


一、入门(简单使用matplotlib创建我们的图像)

使用我们的matplotlib包和numpy包执行下面的代码,我们能绘制出一张点阵和折线重叠的图。

import numpy as np
import matplotlib.pyplot as plt
x=np.arange(10)
y=x**2
#创建点图
plt.scatter(x,y)
#创建折线图
plt.plot(x,y)
plt.show()

二、图像与子图

观察我们下面的代码,我们将fig的尺寸通过plt.figure(figsize=(4,5))进行了设置。其4,5的单位为英寸。

x=np.arange(10)
y=x**2
fig=plt.figure(figsize=(4,5))
plt.plot(x,y)
plt.show()

子图,可以将我们的画布划分为多个部分:fig.add_subplot(n,m,k)

n代表的行数,m表示列数,k表示是第几个图表 

#创建一块画布
fig=plt.figure()
#在我们两行两列的画布的第一张画布上的第一个位置绘制我们的第一个图像
sub_fig1=fig.add_subplot(2,2,1)
#在我们两行两列的画布的第一张画布上的第三个位置绘制我们的第一个图像
sub_fig2=fig.add_subplot(2,2,3)
#在我们两行两列的画布的第一张画布上的第四个位置绘制我们的第一个图像
sub_fig3=fig.add_subplot(2,2,4)
#这里我们没有指定画布,经过我们的测试,我们发现没有指定画布的图标会出现在最后一张图标上,'k--'表示将我们的图线设计为虚线
plt.plot(np.random.randn(50).cumsum(),'k--')
y=np.random.randn(100)
#对我们的第一张图标进行绘制,bins表示将我们柱状图划分成几个区间,color='k'表示将我们的图标的颜色设置为黑色,alpha表示将透明度设置为0.3
sub_fig1.hist(y,bins=20,color='k',alpha=0.3)
#对我们的第二张图进行绘制,我们横数据为0到29之间的所有整数,我们的列数据分别为0到29之间的所有数据再加上三倍的一个标准的正态分布的样本的数据
sub_fig2.scatter(np.arange(30),np.arange(30)+3*np.random.randn(30))
#将我们的全部图标打印出来。
plt.show()

创建子图的快捷方法

这里我们使用fig,axes=plt.subplots(2,3)来在我们的画布上创建两行三列的图标。然后我们将我们的axes指定为画布中的(0,1)位置的图标。如果我们想在其他位置的画布上画画,我们可以再指定axes[,]来让我们的其他位置的图标上画图。

fig,axes=plt.subplots(2,3)
axes[0,1].hist(np.random.randn(100),bins=20,color='k',alpha=0.3)
plt.show()

 多子图属性

共享坐标轴

这里我们按照我们上面的写法创建一个两行两列的图标,并将我们图标的共享x轴属性和共享y轴属性改为true,这样我们就可以共享我们的坐标轴了。然后再通过我们上面的方法,通过axes[,]的方法将我们具体位置的图表绘制。

plt.subplot_adjust(wspace=0,hspace=0)可以调节我们四张图之间的间距,此处我们也可以将wsapce和hspace设置为零,来让我们四张图标紧贴在一起。

fig, axes = plt.subplots(2, 2, sharex=True, sharey=True)
axes[0,1].hist(np.random.randn(100),bins=20,color='k',alpha=0.3)
np.random.seed(80)
axes[1,1].hist(np.random.randn(100),bins=20,color='k',alpha=0.3)
plt.subplots_adjust(wspace=0, hspace=0)
plt.show()

 三、图标元素

颜色,标记与线型

plot参数:x和y轴的数组和字符串参数,如:绿色虚线'g--',或者linestyle='--',color='g'

常用颜色

bblue蓝
ggreen绿
rred红
ccyan青
mmagenta品红
yyellow黄
kblack黑
wwhite白

常用线形

-solid实线
:dotted点线
-.dashdot点虚线
--dashed虚线
(none)no line

常用标记

.point
ocircle
xx-mark
+plus
*star(五角星)
ssquare(□)
ddiamond(◇)
vtriangle(down)▽
^triangle(up)△
<triangle(left)
>triangle(right)
ppentagram(五边形)
hhexagram(六边形)

简单的实例应用

这里我们按照上面我们已经介绍过的方法,创建了两张并列的图标,然后我们将我们的第一张图标绘制了一个折线图,并且将我们的点分布为从0-19,然后将我们的线条格式设置为红色(r),每个点用加号来表示(+),整条线用虚线(--)。当然我们也可以使用我们第二章图的写法,将我们的线条的设置的每一个参数单独写出来,单独进行设置。

fig,axes=plt.subplots(1,2)
axes[0].plot(np.arange(20),'r+--')
axes[1].plot(np.arange(20,0,-1),linestyle=':',color='g',marker='*')
plt.show()

 折线图样式

这里我们设置了几种不同的折线图样式并将我们的不同的折线图绘制在了一起。其中plt.legend(loc='best')是将我们每条线的具体对应的标签标注出来,并将标注放在最合适的位置。从下面的测试代码中我们可以区分出我们的drawstyle分别为steps,steps-post,step-pre,steps-mid不同的区别。

fig=plt.figure()
data=np.random.randn(20).cumsum()
plt.plot(data,'mo--',label='Default')
plt.plot(data,'b*--',drawstyle='steps',label='steps')
plt.plot(data,'r+--',drawstyle='steps-post',label='steps-post')
plt.plot(data,'go--',drawstyle='steps-pre',label='steps-pre')
plt.plot(data,'kv--',drawstyle='steps-mid',label='steps-mid')
plt.legend(loc='best')
plt.show()

标题、标签、刻度和图像 

函数名称函数作用
plt.title添加标题,可以指定标题的名称,位置,颜色,字体大小等参数
plt.xlabel添加x轴名称,可以指定位置,颜色,字体大小等参数
plt.ylabel添加y轴名称,可以指定位置,颜色,字体大小等参数
plt.xlim指定x轴范围,只能确定一个数值区间,而无法使用字符串标识
plt.ylim指定y轴范围,只能确定一个数值区间,而无法使用字符串标识
plt.xticks指定x轴刻度的数目与取值,可以使用字符串
plt.yticks指定y轴刻度的数目与取值,可以使用字符串
plt.legend指定当前图形的图例,可以指定图例的大小、位置、标签等

简单应用 

#创建画布
fig=plt.figure()
#当前测试的环境为max电脑,可以使用下面这两行代码来使我们的图标的中文正常显示
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
#如果为Windows电脑可以尝试加下面两行代码来解决中文显示异常的问题
# plt.rcParams["font.family"] = ["sans-serif"]
# plt.rcParams["font.sans-serif"] = ['SimHei']

#在我们的整个画布划分为一行一列,在画布的第一张图标的位置绘制,也就是整张图标都用来绘制一张图
ax=fig.add_subplot(1,1,1)
#将我们的横坐标的刻度分别设置为0,250,500,750,1000
ax.set_xticks([0,250,500,750,1000])
#将我们横坐标的刻度的对应位置的数据分别替换为如下的单词,并且设置字符的旋转角度为30,并且字体的大小为small
ax.set_xticklabels(['one','two','three','four','five'],rotation=30,fontsize='small')
#将我们的图标的y轴范围设置为-50到50
ax.set_ylim(-50,50)
#将我们图标的名字命名为'统计图1'
ax.set_title('统计图1')
#将我们图表的x轴标签设置为Stages
ax.set_xlabel('Stages')
#将我们图表的y轴标签设置为Number
ax.set_ylabel('Number')

#分别绘制我们图表中的不同的线条
#使用一千个正态分布的样本,并将我们的数据逐个累加,并且将我们的线条的标签命名为随机数
ax.plot(np.random.randn(1000).cumsum(),label='随机数')
#使用arange函数能让我们生成1到1000的数字,然后分别带入我们的取对数log函数中生成我们的对数数据,并且将我们的线条命名为对数
ax.plot(np.log(np.arange(1,1001))*5,label='对数')
#使用arange函数生成0到999的数字,然后将其绘制成折线图,并将线条的标签设置为线性
ax.plot(np.arange(0,1000)/25,label='线性')
#添加标注,并将其放在最合适的位置
ax.legend(loc='best')
plt.show()

标注 

ax.test(x,y,str)/ax.annotate(str,xy,xytest,arrowprops)

#创建一张画布
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ticks=ax.set_xticks([0,250,500,750,1000])
labels=ax.set_xticklabels(['one','two','three','four','five'],rotation=30,fontsize='small')

#将画布坐标的100,10的位置写上hello
ax.text(100,10,'hello')

#将我们的文字top写在520,15的所表上,再在我们图标的520,40的位置上画一个箭头
ax.annotate('top',xy=(520,15),xytext=(520,40),arrowprops=dict())

ax.set_title('My plot')
ax.set_xlabel('Stages')
ax.set_ylabel('Number')
ax.set_ylim([-50,50])
np.random.seed(100)
ax.plot(np.random.randn(1000).cumsum())
plt.show()

 几何图形的绘制

#创建我们的画布
fig=plt.figure()
ax=fig.add_subplot(1,1,1)

#创建一个矩形,并且让我们的矩形的左下角的点在坐标0.2,0.75的位置,然后设置我们的矩形的长为0.4,设置我们矩形的高为0.15
rect=plt.Rectangle((0.2,0.75),0.4,0.15,color='r',alpha=0.3)

#创建一个椭圆,其圆心的位置在0.7,0.2的位置,然后设置椭圆长半轴的长度为0.2
circ=plt.Circle((0.7,0.2),0.2,color='g',alpha=0.3)

#创建一个三角形,然后分别将三角形的三个角的坐标位置传入
pgon=plt.Polygon([[0.15,0.15],[0.35,0.4],[0.2,0.6]],color='b',alpha=0.5)

#分别将我们的三个形状绘制到我们的画布当中
ax.add_patch(rect)
ax.add_patch(circ)
ax.add_patch(pgon)
plt.show()

 绘制不同类型的表格请参考这篇博客

matplotlib简单绘制不同类型的表格_wolfwalker的博客-CSDN博客_matplotlib 表格

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桜キャンドル淵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值