Matplotlib各种样式的图

散点图(scatter())

import numpy as np
import matplotlib.pyplot as plt

n = 102 #散点的个数
X = np.random.normal(0, 1, n) #生成散点的横坐标,这些数值服从均值为0,方差为1的正态分布
Y = np.random.normal(0, 1, n)
T = np.arctan2(Y, X) #设定每个散点的颜色值,如为1则对应颜色模板中的颜色一

plt.scatter(X, Y, c=T, s=75)
plt.xticks(())
plt.yticks(())

plt.show()

scatter的参数:
X:散点的横坐标(列表)
Y:散点的纵坐标(列表)
c=T:散点对应的颜色值(列表)
s=75:散点的大小(数值)
在这里插入图片描述

柱状图(bar())

import numpy as np
import matplotlib.pyplot as plt

n = 12 #柱子条数
X = np.arange(12) #柱子的横坐标
Y = (1 - X/n) * np.random.uniform(0.5, 1, n) #柱子的高度

plt.bar(X, Y, facecolor="red", edgecolor="black")#画柱子

plt.xticks(X) #设置横坐标的数值
for x, y in zip(X, Y):
    plt.text(x, y+0.005, "%.2f"%y, ha="center", va="bottom") #给柱子添加标注

plt.show()

bar的参数:
X:柱子的横坐标(列表)
Y:柱子的高度(列表)
facecolor:柱子的颜色(字符串如:“red”)
edgecolor:柱子的边缘颜色(字符串如:“red”)

补充:
plt.text(x, y+0.005, "%.2f"%y, ha="center", va="bottom")
参数:
x:标注的横坐标(数值)
y:标注的纵坐标(数值)
"%.2f"%y:标注的内容(字符串)
ha="center":标注跟柱子水平中心对齐
va="bottom":标注的底部跟柱子贴着

在这里插入图片描述

等高线

import numpy as np
import matplotlib.pyplot as plt
#高度的函数
def f(x,y):
    # the height function
    return (1 - x / 2 + x**5 + y**3) * np.exp(-x**2 -y**2)
    
n = 256
x = np.linspace(-3, 3, n) #产生n个横坐标
y = np.linspace(-3, 3, n) #产生n个纵坐标

X, Y = np.meshgrid(x, y) #将显示窗口划分为len(x)*len(y)个小方块,有X,Y索引可得到对应的小方块
plt.contourf(X, Y, f(X, Y), 8, alpha=0.75, cmap=plt.cm.hot)

plt.xticks(())
plt.yticks(())
plt.show()

contourf的参数:
X:小块的横坐标索引(列表)
Y:小块的纵坐标索引(列表)
f(X, Y):对应小块的数值即高度(列表)
8:这个参数加2则为等高线将整幅图分成的块数
alpha:透明度
cmap:颜色模板
在这里插入图片描述

C = plt.contour(X, Y, f(X, Y), 8, colors="black", linewidths=1)

contour参数:
X:小块的横坐标索引(列表)
Y:小块的纵坐标索引(列表)
f(X, Y):对应小块的数值即高度(列表)
8:这个参数加2则为等高线将整幅图分成的块数
colors:等高线颜色
linewidths:等高线粗细
在这里插入图片描述

plt.clabel(C, inline=True, fontsize=15)

clabel的参数:
C:等高线
inline:数字是否在等高线上
fonsize:字体的大小
在这里插入图片描述

3D图

首先要导入Axes3D函数

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d im Axes3D

接下来生成3d坐标系

fig = plt.figure()
ax = Axes3D(fig)

在这里插入图片描述

接下来生成x和y值,并且将xy平面编辑成栅格

x = np.arange(-4, 4, 0.25)
y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(x, y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

再来用plot_surface()函数画一个三维图

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap="rainbow", edgecolor="black")

plot_surface的主要参数
rstride:行间隔
cstride:列间隔
cmap:颜色模板
edgecolor:分割线颜色
在这里插入图片描述
最后设置一下z轴的范围,让图形好看些

ax.set_zlim(-2, 2)

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值