本章我们将从一个简单的图形开始,演示各种绘图方法,逐步丰富图形,使其更美观。

使用默认属性绘图

Matplotlib中,绘制图形时,可以设置一些属性,包括:图形大小、dpi、行宽、颜色和样式、坐标轴、网格属性、文本和字体属性等等。如果不设置,则将使用属性的默认值。

示例

使用默认设置,绘制正弦函数和余弦函数的曲线图。

# 导入numpy库与matplotlib.pyplot库
import numpy as np
import matplotlib.pyplot as plt # 准备数据
X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C, S = np.cos(X), np.sin(X) # 绘制曲线
plt.plot(X, C)
plt.plot(X, S) # 显示图像
plt.show()

绘制图形:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QQfj20wz-1571969290446)(https://www.qikegu.com/wp-content/uploads/2019/07/mat2-1.png)]

属性设置

在下面的示例中,我们显式地列出了所有影响绘图的属性及其默认值。

示例

# 导入numpy库与matplotlib.pyplot库
import numpy as np
import matplotlib.pyplot as plt # 创建一个大小为8x6英寸的图形,每英寸80个点
plt.figure(figsize=(8, 6), dpi=80) # 从1x1的网格创建一个新的子图
plt.subplot(1, 1, 1) X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C, S = np.cos(X), np.sin(X) # 用宽度为1(像素)的蓝色连续线绘制余弦曲线
plt.plot(X, C, color="blue", linewidth=1.0, linestyle="-") # 用宽度为1(像素)的绿色连续线绘制正弦曲线
plt.plot(X, S, color="green", linewidth=1.0, linestyle="-") # 设置 x 限制
plt.xlim(-4.0, 4.0) # 设置 x ticks
plt.xticks(np.linspace(-4, 4, 9, endpoint=True)) # 设置 y 限制
plt.ylim(-1.0, 1.0) # 设置 y ticks
plt.yticks(np.linspace(-1, 1, 5, endpoint=True)) # 保存图形,使用72点每英寸
# plt.savefig("exercise_2.png", dpi=72) # 在屏幕上显示结果
plt.show()

绘制图形:

改变颜色和线宽

我们想让cos用蓝色,sin用红色,它们都用一条更粗的线绘制,同时稍微改变图形大小。

...
plt.figure(figsize=(10, 6), dpi=80)
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-")
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-")
...

绘制图形:

设定界限

这个图形的边缘限制有点太紧了,我们想留出一些空间,以便清楚地看到所有的数据点。

...
plt.xlim(X.min() * 1.1, X.max() * 1.1)
plt.ylim(C.min() * 1.1, C.max() * 1.1)
...

绘制图形:

设置刻度

坐标轴刻度可以设置,我们把坐标轴刻度设置为`(+/-π, +/-π/2)。

...
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi])
plt.yticks([-1, 0, +1])
...

绘制图形:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kP7j9nI0-1571969290452)(https://www.qikegu.com/wp-content/uploads/2019/07/mat3_4.png)]

设置刻度标签

上面的坐标轴刻度都是数字,可以设置刻度标签。

...
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$']) plt.yticks([-1, 0, +1],
[r'$-1$', r'$0$', r'$+1$'])
...

绘制图形:

移动图形(相对于坐标轴)

可以相对于坐标轴移动图像。

...
ax = plt.gca() # gca 表示 'get current axis', 获取当前坐标轴
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
...

绘制图形:

添加图例

图例是位于图形一角或一侧的说明,解释各种符号和颜色的意义,有助于更好地理解图形。

...
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-", label="sine") plt.legend(loc='upper left')
...

绘制图形:

添加注解

可以使用annotate命令对一些点添加注解。在x=2π/3处, 画一条虚线,标出sin与cos曲线上对应的点。注解支持latex格式。

...
t = 2 * np.pi / 3
plt.plot([t, t], [0, np.cos(t)], color='blue', linewidth=2.5, linestyle="--") # 画虚线
plt.scatter([t, ], [np.cos(t), ], 50, color='blue') # 画点 # 添加注解
plt.annotate(r'$cos(\frac{2\pi}{3})=-\frac{1}{2}$',
xy=(t, np.cos(t)), xycoords='data',
xytext=(-90, -50), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2")) plt.plot([t, t],[0, np.sin(t)], color='red', linewidth=2.5, linestyle="--") # 画虚线
plt.scatter([t, ],[np.sin(t), ], 50, color='red') # 画点 # 添加注解
plt.annotate(r'$sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
xy=(t, np.sin(t)), xycoords='data',
xytext=(+10, +30), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
...

绘制图形:

细节微调

由于有蓝色和红色的线,现在几乎看不到刻度标签。我们调整它们的字体和颜色,让它们看起来更清晰。

...
for label in ax.get_xticklabels() + ax.get_yticklabels():
label.set_fontsize(16) # 调整字体大小
label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65)) # 调整颜色
...

绘制图形:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mWeWsFRs-1571969290458)(https://www.qikegu.com/wp-content/uploads/2019/07/mat3_9.png)]

Matplotlib 图形绘制的更多相关文章

  1. 数据分析——Matplotlib图形绘制

    创建画布或子图 函数名称 函数作用 plt.figure 创建一个空白画布,可以指定画布大小,像素. figure.add_subplot 创建并选中子图,可以指定子图的行数,列数,与选中图片编号. ...

  2. Python的工具包[2] -> matplotlib图像绘制 -> matplotlib 库及使用总结

    matplotlib图像绘制 / matplotlib image description  目录 关于matplotlib matplotlib库 补充内容 Figure和AxesSubplot的生 ...

  3. 【Windows编程】系列第五篇:GDI图形绘制

    上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数 ...

  4. 13个JavaScript图表(JS图表)图形绘制插件【转】

    现在网络上又有越来越多的免费的(JS 图表)JavaScript图表图形绘制插件.我之前给一家网站做过复杂的图形,我们用的是 highchart.在那段时间,没有很多可供选择的插件.但现在不同了,很容 ...

  5. 推荐12个最好的 JavaScript 图形绘制库

    众多周知,图形和图表要比文本更具表现力和说服力.图表是数据图形化的表示,通过形象的图表来展示数据,比如条形图,折线图,饼图等等.可视化图表可以帮助开发者更容易理解复杂的数据,提高生产的效率和 Web  ...

  6. C#中的GDI+图形绘制方法

    GDI+图形绘制方法 1.首先对于绘制图形,必须的先将命名空间导入:using System.Drawing.Drawing2D; 2.然后在一个事件中写入程序 首先先将Graphics这个对象实例化 ...

  7. cocos2d-x 图形绘制

    转自:http://blog.csdn.net/zhy_cheng/article/details/8480048 图形绘制的话,在cocos2d-x自带的TestCpp里有,包括绘制点,直线,多边形 ...

  8. 图形绘制 Canvas Paint Path 详解

    图形绘制简介        Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0.大部分2D使用的api都在android.grap ...

  9. HTML5图形绘制学习(1)-- Canvas 元素简介

    Canvas元素是HTML5中新增的一个专门用来进行图形绘制的元素.和其名称Canvas一样,它就相当于一个画布,我们可以在其上描绘各种图形. 这里所说的绘制图型,不是指我们可以进行可视化的图形绘制, ...

随机推荐

  1. vue cavnas绘制矩形,并解决由clearRec带来的闪屏问题

    起因:在cavnas绘制矩形时 鼠标移动一直在监测中,所以鼠标移动的轨迹会留下一个个的矩形框, 要想清除矩形框官方给出了ctx.clearRect() 但是这样是把整个画布给清空了,因此需要不断 向画 ...

  2. idea使用小技巧

    1.按住alt,鼠标往下拉一条直线,可以选中一列或多列,或者不选中任何文字,可以让光标定位到这几行的相同的列的位置,然后输入文本,发现在被选中的所有行同时输入了这些文本(类似notepad++): 2 ...

  3. [原]Java工程打包注意事项

    注意事项(持续增加...): 如果Java工程中用到了注解,在用eclipse打jar包时需要注意一下,勾上“Add directory entries”,否则注解的类会注册不上

  4. vue.js 第九课

    这次讲红色框框. 方法与事件处理器: 方法处理器: 内联语句处理器: 事件修饰符: 按键修饰符: 为什么在HTML中监听事件? 1.v-on绑定事件 带参数 2.事件对象$event: 有时也需要调用 ...

  5. leetcode菜鸡斗智斗勇系列(7)--- 用最小的时间访问所有的节点

    1.原题: https://leetcode.com/problems/minimum-time-visiting-all-points/ On a plane there are n points ...

  6. Ubuntu开启端口(持久化)

    1.查看已经开启的端口 sudo ufw status 2.打开80端口 sudo ufw allow 3.防火墙开启 sudo ufw enable 4.防火墙重启 sudo ufw reload

  7. Java基础知识笔记第七章:内部类和异常类

    内部类 /* *Java支持在一个类中定义另一个类,这样的类称为内部类,而包含内部类的类称为内部类的外嵌类 */ 重要关系: /* *1.内部类的外嵌类在内部类中仍然有效,内部类的方法也可以外嵌类的方 ...

  8. Struts2高级(插件)笔记一

    插件 Struts-plugin.xml 说明: Struts-plugin.xml文件是在tomcat服务器启动的时候加载的 该配置文件在classpath的根目录下 在每一个含有plugin字母的 ...

  9. Linux 添加新磁盘 && 创建分区 && 挂载

    参考: 挂载目录 分区:https://blog.csdn.net/arenn/article/details/78866251 挂载:https://www.jb51.net/article/108 ...

  10. tomcat启动报错failed to start component

    严重: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catali ...