python作图

python常用的还是数据分析,算法方面。作图用的很少,或者说在作图方面的优势不大,比如excel,matlab,origin就可以把图做得很好。

python中绘图要调用matplotlib包,使用比较灵活,在论文中也见过不少用的。

1.绘制常见的散点图,折线图,柱状图,以及常用的格式,区别只在于作图那一行的代码。

如:

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

mpl.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题

# 绘制散点图
x = np.random.randint(low=2, high=10, size=10)
y = np.random.randint(low=2, high=10, size=10)

#===============除了数据,区别就在于下一行代码==================
plt.scatter(x, y)  # 绘制散点图


# 绘制折线图,以sin函数为例
x = np.linspace(start=0, stop=30, num=300)
y = np.sin(x)
plt.plot(x, y)

# 绘制柱状图
plt.bar(x, y, width=0.5)


# 直方图
x = np.random.normal(loc=0, scale=1, size=1000)
plt.hist(x=x, bins=50)


plt.title("这是散点图")
plt.xlabel("x轴标签")
plt.ylabel("y轴标签")
plt.show()

2.形状,线型,颜色,透明度等属性可以对应调节,同样,只需要改一行代码中的部分字句即可。

plt.plot(x, y, color='r', marker='d', linestyle='--', linewidth=2, alpha=0.8)
plt.title('颜色:红,标记:棱形,线性:虚线,线宽:2,透明度:0.8')

颜色属性 r:红色 b:蓝色 g:绿色 y:黄色

数据标记属性 o:圆圈 .:圆点 d:菱形 

线型属性 --(两横线):虚线 -(一横线):实线

3.组合图、子图和动态图和常见图的区别在于设置句柄。一张图中有很多句柄,不同句柄对应不同的子图。

组合图是一张图上显示多幅图形,前后覆盖。思路:先画第一图,再画第二图......

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

# 绘制正弦曲线,并修改图形属性
x1 = np.linspace(start=0, stop=30, num=300)
y1 = np.sin(x1)
x2 = np.random.randint(low=0, high=10, size=10)
y2 = np.random.randint(low=0, high=10, size=10) / 10

# 先绘制折线图,用蓝色
plt.plot(x1, y1, color='b', label='line plot')
# 再绘制散点图,用红色
plt.scatter(x2, y2, color='r', label='scatter plot')

plt.title("组合图")
plt.legend(loc='best')  # 显示图例
plt.show()

子图是把画板分为几部分,每一部分展示不同的子图。画图时用axi.plot()函数。axi是子图的句柄。

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

fig = plt.figure(figsize=(10, 10))  # 指定画布大小

ax1 = fig.add_subplot(2, 2, 1)  # 添加一个子图,返回子图句柄
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)
ax4 = fig.add_subplot(2, 2, 4)

# 子图1绘制sin图形
x = np.linspace(start=0, stop=30, num=300)
y = np.sin(x)
ax1.plot(x, y)
ax1.set_title('子图1')

# 子图2绘制散点图
x = np.random.randint(low=2, high=10, size=10)
y = np.random.randint(low=2, high=10, size=10)
ax2.scatter(x, y)  # 绘制散点图
ax2.set_title('子图2')

# 子图3绘制直方图
x = np.random.normal(loc=0, scale=1, size=1000)
ax3.hist(x=x, bins=50)
ax3.set_title('子图3')

# 子图4绘制组合图
x1 = np.linspace(start=0, stop=30, num=300)
y1 = np.sin(x1)
x2 = np.random.randint(low=0, high=10, size=10)
y2 = np.random.randint(low=0, high=10, size=10) / 10

# 绘制组合图
ax4.plot(x1, y1, color='b', label='line plot')
ax4.scatter(x2, y2, color='r', label='scatter plot')
ax4.set_title('子图4')

# 最后显示图形
plt.show()

三维图需要调用3D包(与上述调用的matplotlib包不同),同时需要指定3D图形,作图时指定的函数一样的。

# 3D曲线图
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt

# 生成画布
fig = plt.figure()
ax = fig.gca(projection='3d')  # 指定为3D图形

# 生成(x,y,z)数据
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z ** 2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)

# 绘制图形
ax.plot(x, y, z)  # 曲线图和2D一样使用plot函数
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值