matplotlib笔记

mateplotlib 的 mateplotlib.pyplot 官网
https://matplotlib.org/3.5.1/api/pyplot_summary.html

matplotlib画图的一些基本概念
在这里插入图片描述
从图中可以看到Figure是最大的,可以理解成画布或者画板;Axes是Axis的复数,Axis是坐标轴,Axes可以理解为坐标系或者轴域,表示在画板(Figure)上作画的区域。如下图,表示在1个Figure中,有4个Axes

fig = plt.figure()  # 创建画布
ax1 = fig.add_subplot(221)  # 在画布中划分一个2行2列的区域,并选中第一个区域,生成作图区域ax1
ax2 = fig.add_subplot(222)  # 选中第2个作图区域ax2
ax3 = fig.add_subplot(224)  # 选中第4个作图区域ax3

或者用以下命令创建
fig, axes = plt.subplots(nrows=2, ncols=2)
ax1 = axes[0,0]
ax2 = axes[0,1]
ax3 = axes[1,1]

在这里插入图片描述

基本用法

设置画布

fig = plt.figure(figsize=(25, 6))

如果不设置axes,则默认为在生成的figure画布上的一个axis作图。在修改坐标内容时有的需要在前边加上 set_ , 例如 set_xlabel
axis参数见:
https://matplotlib.org/3.5.1/api/axes_api.html#matplotlib.axes.Axes

0 画图

plt.plot(x,'.',color="black",markersize=7,alpha=0.6,mew=0,mec='r')
# markersize 标记的大小
# alpha 标记的透明度
# mew 标记的外边缘宽度
# mec 标记的外边缘颜色

以下为直接在figure默认的axis上作图

1. 轴标签修改

当轴0刻度不在原点时,用xlim、ylim设置
设置x轴,y轴 最大,最小 范围

plt.ylim(-20, 20)
plt.xlim(-20, 20)

修改x轴刻度, 只显示在 x_kedu 位置的标签 ,标签对应为x_label ,rotation表示标签旋转50度

x_kedu = [3,5,7]
x_label = ["exon3","exon5","exon7"]
plt.xticks(x_kedu, labels=x_label,rotation=50)

#同理,y轴标签设置
plt.ytick([...], [...],)

在这里插入图片描述

清空X轴 Y轴刻度,标签

plt.xticks([])
plt.yticks([])

在这里插入图片描述

当赋予labels的值为空时,则在locs决定的位置上虽然会画出ticks,但不会显示任何值。
plt.xticks(x,())

在这里插入图片描述

轴名称改变, 字体与轴的间距

plt.xlabel('entry x', fontsize=10)
plt.ylabel('entry y', labelpad = 10)   # labelpad 指字体与轴的间距


轴字体大小修改

plt.tick_params(labelsize=23)

2. 表头

设置表头

plt.title("表头")

3. 画横线竖线,网格线

在y轴-7 , x轴0到10 区间内 画一条横线

plt.hlines(y=-7, xmin=0, xmax=10, linestyles='dashed', color="r")

在x轴等1, y轴2到10区间内,画一条竖线

plt.vlines(x=1, ymin=2, ymax=10, linestyles='dashed', color="r")

背景网格线

plt.grid(axis="y", linestyle='-.', linewidth=0.8)

4. 保存pdf

# 作图
figs=[]
for ....:
    fig = plt.figure(figsize=(25, 6), dpi=400)
    do something....
    ....

#将画布保存到pdf    
with PdfPages("final.pdf") as pdf:
        for fig in figs:
            pdf.savefig(fig)

# 保存在png
fig.savefig("pic.png")

5. 图例修改

a= plt.scatter(x_pos, y_pos, alpha=1, linewidth=10, label='ctDNA 阳性',c='red')
b = plt.scatter(x_neg, y_neg, linewidth=10, label='ctDNA 阴性',c='g')
常规调用:
plt.legend(fontsize=11,frameon=True,shadow=True,labelspacing=0.8)  # 显示上面的label

自定义图例,可以根据定义的a b,选择需要显示的图例
plt.legend([a,b],['ctDNA 阳性','ctDNA 阴性'],fontsize=11,numpoints=1,frameon=True,shadow=True,labelspacing=0.8)

链接
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

风风是超人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值