python可视化(1)从一张图开始入门

Life is short,show me the code !

人生苦短,python的套路不可谓不深……

当你开开心心地攻破python基础语法并牛刀小试地学会numpy,pandas的时候,新的空间已经为你打开!

沿着可视化方向,可以精进matplotlib、seaborn等可视化库;

沿着人工智能方向,可以精进机器学习(sklearn)、深度学习(tensorflow,keras,pytorch)等库;

沿着爬虫方向,可以精进beautifulsoup,selenium,scrapy,flask等库;

沿着软件开发方向,可以精进django,QT等框架;

沿着数据库方向,可以精进mysql、mongodb,redis,spark等库;

…………

子曰:吾生也有涯,而知也无涯。以有涯随无涯,殆已!人生苦短,身处一个知识浩如烟海的时代,我们或没有“半部论语治天下”的机会了。“一文教会你XXX”,“一周掌握XXX”,“学会XXX,你只需要XXX” 带着强烈心理暗示标题的文章挖空心思地挤进你小小的手机屏幕,他们告诉你,再慢你就来不及了。

是呀!时间太宝贵了,当你打开本文的时候,我也抱着满满的歉意,又浪费你时间了,客套话不说了,上正文吧。

本文代码运行环境为 jupyter notebook

python版本3.7

本文代码依赖库包括

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

两行代码自定义正弦曲线
三行代码完成绘图

x = np.linspace(0, 10, 1000)
y_sin = np.sin(x)
# 自定义正弦曲线
plt.plot(x, y_sin, ls='-', c='black', lw=2, label='sin(x)')
plt.legend()
plt.show()

在这里插入图片描述

有时我们更关心局部的一些特征,可以通过以下接口限制图形显示范围

plt.xlim([0, 3])
plt.ylim([0, 1])

添加x轴、y轴标签

plt.xlabel('x-axis',size=15)
plt.ylabel('y-axis',size=15)

添加网格线

plt.grid(which='major', axis='x', c='r', lw=2, ls=":")
plt.grid(which='major', axis='y', c='g', lw=2, ls="--")


添加辅助线

plt.axhline(y=0.5, lw=4, c='blue')
plt.axhline(y=0.7, xmin=0.5, xmax=0.75, lw=4, c='blue')
plt.axvline(x=1.8, ymin=0.2, ymax=0.8, lw=4)

添加填充面

plt.axvspan(xmin=0.7, xmax=1.2, ymin=0.4, ymax=0.7, facecolor='r', edgecolor='b',)
plt.axhspan(ymin=0.1, ymax=0.2, xmin=0.4, xmax=0.6, facecolor='y', alpha=0.4)

添加注释

plt.annotate(s='annotate point',
             xy=(0.5, 0.2),  # 需要被标注的位置
             xytext=(1.0, 0.3),  # 标注文本所在的位置
             weight='bold',  # 加粗
             color='r',  # 标注文本颜色
             size=15,  # 标注文本字体大小
             arrowprops=dict(arrowstyle="->", connectionstyle='arc3',
                             linestyle='--', linewidth=4, color='r')
             )

添加文本

plt.text(x=0.5,
         y=0.8,
         s='正弦曲线',
         family='SimHei',
         size=20,
         va='bottom',  # 垂直方向位置
         ha='center'  # 水平方向位置
         )

添加标题

plt.title('正弦曲线y=sin(x)\n', size=25, family='SimHei')

进一步调整图例

plt.legend(
    ['sin-x'],  # 图例显示标签,默认为传入数据 y的label名称
    loc=1,  # loc 一共有10个位置选项,通过给定数字或者是特定字符表述
    frameon=False,  # legend是否需要外边框,True表示有,为默认值
    fontsize=20,  # 文本大小
)

进一步调整坐标轴标签

plt.xticks(ticks=[0, 0.5, 1.0, 2.0, 3.0]  # 自定义刻度
           , fontsize=20, fontfamily='Times New Roman')
plt.yticks(ticks=[0.1, 0.4, 0.7, 1.0]  # 自定义刻度
           , labels=['y-0.1', 'y-0.4', 'y-0.7', 'y-1.0']
            , size=20, family='Times New Roman'
           )

保存文件

plt.savefig('sin.png',dpi=220,pad_inches=0.0)

至此,我们已经完成了一个虽谈不上美观、但各要素(标题、网格、辅助线、注释、文本、轴标题、轴标签)都相对齐备的图,并且初步尝试了对图例和坐标轴标签进行了定制,后续随着我们更深入地挖掘,你会看到,matplotlib的图层自由度是极高的,每个对象都有多个参数对其修饰。让我们更细致、更深入地去挖掘matplotlib!

猜你喜欢

转载自blog.csdn.net/weixin_43636051/article/details/108458001
今日推荐