python绘制非常漂亮的图表,python如何生成图表

大家好,小编来为大家解答以下问题,python绘制非常漂亮的图表,基于python的图表生成系统,今天让我们一起来看看吧!

 

众所周知,知乎是一个专业的学习网站。时间不等人,开始今天的学习。今天我们讲python能和matlab媲美的绘图工具包-------Matlibplot。什么?你没学过python?那你点个赞赶紧走吧。

首先我们先了解一下,一张美丽的图表(Figure)包括了哪些东西,最基本的是坐标轴,图例,曲线,标题(如下图)。如何利用matlibplot创建一个Figure呢?在你的python编译器里面输入下面两行神秘代码,赋予你的编译器神奇的力量(导入我们需要的库)。

#导入matlibplot

import matplotlib.pyplot as plt

#导入numpy

import numpy as np图1 一张美丽的图表

然后利用下面的代码创建一个figure,运行之后的样子是python弹出了一个Figuer窗口但是除了标题什么都没有。

fig = plt.figure() # l空Figure

fig.suptitle('No axes on this figure') #这个Figure的标题是‘没有坐标轴在这个figure中’图2 这是一张空白的Figure

我们尝试画一两个不同相位的正弦曲线试试,并添加图例,标题等,输入下面的神秘代码,可以看出两条正弦曲线出现了,注意我们在代码里并没有定义两条曲线的颜色,但是python还是很贴心的给我们自动的用不同的颜色画出了曲线。

import matplotlib.pyplot as plt

import numpy as np

x = np.arange(0, 10, 0.2)#x的范围0-10 步长0.2

y1 = np.sin(x)#计算y1

y2 = np.sin(x+0.2)#计算y2

fig, ax = plt.subplots()#创建一个figure

ax.plot(x, y1, label='y1')

ax.plot(x, y2, label='y1')

plt.show()

这个图虽然画出来了,但是你仔细品,感觉是不是不够丰富,那你再试试下面这段代码,这下画出来的图是不是有内味了^_^。

import matplotlib.pyplot as plt

import numpy as np

x = np.arange(0, 10, 0.2)#x的范围0-10 步长0.2

y1 = np.sin(x)#计算y1

y2 = np.sin(x+0.2)#计算y2

fig, ax = plt.subplots()#创建一个figure

####plot

ax.plot(x, y1, label='y1')

ax.plot(x, y2, label='y2')

####展示图例 legend loc=是用来定义图例的位置的,还有很多选择,大家可以自己尝试

ax.legend(loc = 'upper right')

####定义标题

fig.suptitle('sin curve')

####定义x, y轴的名称

ax.set_xlabel('x')

ax.set_ylabel('y')

####定义x,y轴的显示范围

ax.set_xlim(0, 10)

ax.set_ylim(-1,1)

####打开网格

ax.grid(True)

plt.show()

上面的图你觉得怎么样,我觉得不行,还可以更酷炫,show you the code. 这里把曲线的线型做了定义, 这段代码里面的'-rv'包含了三个重要细节: 表示实线 表示红色 表示下三角形。大家也可以尝试其他的线型,线条类型的表示方法我也放在下面。

import matplotlib.pyplot as plt

import numpy as np

x = np.arange(0, 10, 0.2)#x的范围0-10 步长0.2

y1 = np.sin(x)#计算y1

y2 = np.sin(x+0.2)#计算y2

fig, ax = plt.subplots()#创建一个figure

####plot 定义了线型

ax.plot(x, y1, '-rv',label='y1')

ax.plot(x, y2, '-bo',label='y2')

####展示图例 legend loc=是用来定义图例的位置的,还有很多选择,大家可以自己尝试

ax.legend(loc = 'upper right')

####定义标题

fig.suptitle('sin curve')

####定义x, y轴的名称

ax.set_xlabel('x')

ax.set_ylabel('y')

####定义x,y轴的显示范围

ax.set_xlim(0, 10)

ax.set_ylim(-1,1)

####打开网格

ax.grid(True)

plt.show()python matlibplot 不同线形的标识

看到这里我觉得上面的技能应该能满足你大部分的需求了吧。什么?还不够,还想学,好吧下面再展示一个再一个figure中画两幅图的操作,画两幅白噪声的曲线,顺便对每幅曲线做一些操作。

import numpy as np

import matplotlib.pyplot as plt

# Fixing random state for reproducibility

np.random.seed(19680801)

dt = 0.01

t = np.arange(0, 30, dt)

nse1 = np.random.randn(len(t)) # white noise 1

nse2 = np.random.randn(len(t)) # white noise 2

# Two signals with a coherent part at 10Hz and a random part

s1 = np.sin(2 * np.pi * 10 * t) + nse1

s2 = np.sin(2 * np.pi * 10 * t) + nse2

fig, axs = plt.subplots(2, 1)

axs[0].plot(t, s1, t, s2)

axs[0].set_xlim(0, 2)

axs[0].set_xlabel('time')

axs[0].set_ylabel('s1 and s2')

axs[0].grid(True)

cxy, f = axs[1].cohere(s1, s2, 256, 1. / dt)

axs[1].set_ylabel('coherence')

fig.tight_layout()

plt.show()

如果需要绘制三维的图形,matlab可以,python同样可以,代码风格也是极其的与matlab类似。

import numpy as np

import matplotlib.pyplot as plt

from matplotlib import cm

from mpl_toolkits.mplot3d import Axes3D

X = np.arange(-5, 5, 0.25)

Y = np.arange(-5, 5, 0.25)

X, Y = np.meshgrid(X, Y)

R = np.sqrt(X**2 + Y**2)

Z = np.sin(R)

fig = plt.figure()

ax = Axes3D(fig)

surf=ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.viridis)

# Add a color bar which maps values to colors.

fig.colorbar(surf, shrink=0.5, aspect=5)

plt.show()

看到这里我觉得你已经入门python基本的绘图操作了,当然如果你还想学的话我可以推荐一些网站,B站众所周知也是一个学习网站。另外不可能一篇文章把python绘图每个细节与函数都讲完,师傅领进门修行在个人,以后的路需要你们每个人自己走了,加油,如果你觉得这篇文章让你收益那么一点点的话,帮忙点个赞,让我知道我帮助了多少人,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值