20190906_matplotlib_学习与快速实现

20190906

Matplotlib 学习总结

 

第一部分

参考连接:

Introduction to Matplotlib and basic line

https://www.jianshu.com/p/aa4150cf6c7f?winzoom=1 (简书)

 

示例一:坐标单线

代码:

1 """ first example """
2 """ 坐标单线 """
3 plt.plot([1,2,3], [5,7,4])  # 坐标(1,5) (2,7) (3,4)
4 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第1张图片

 

 

示例二:坐标双线

代码:

 1 """ second example """
 2 """ 坐标双线 """
 3 x = [1, 2, 3]   # x 轴坐标
 4 y = [5, 7, 4]   # y 轴对应坐标
 5 
 6 x2 = [1, 2, 3]      # x2 轴坐标
 7 y2 = [10, 14, 12]   # y2 轴对应坐标
 8 
 9 plt.plot(x, y, label = 'first line')    # label 为线条指定名称 在图相右上角小框
10 plt.plot(x2, y2, label = 'second line')  # label 为线条指定名称 在图相右上角小框
11 
12 plt.xlabel('plot number')   # 创建 x 轴标签
13 plt.ylabel('important var') # 创建 y 轴标签
14 plt.title('interesting graph\ncheck it out')    # 创建标题
15 plt.legend()    # 生成默认图例
16 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第2张图片

 

 

 

 

示例三:1. 条形图

代码:

 1 """ third example """
 2 """ 条形图 """
 3 plt.bar([1,3,5,7,9], [5,2,7,8,2], label = "example one")  # 颜色 绿-g,蓝-b,红-r, bar 创建条形图
 4 plt.bar([2,4,6,8,10], [8,6,2,5,6], label = "example two", color = 'g')
 5 plt.legend()
 6 
 7 plt.xlabel('bar number')
 8 plt.ylabel('bar height')
 9 
10 plt.title('epic graph\nanother line! whoa')
11 
12 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第3张图片

 

 

 

 

示例三:2. 直方图

代码:

 1 # """ 直方图 """
 2 population_ages = [22,55,62,45,21,22,34,42,42,4,99,102,110,120,121,122,130,111,115,112,80,75,65,54,44,43,42,48]
 3 bins = [0,10,20,30,40,50,60,70,80,90,100,110,120,130]
 4 
 5 plt.hist(population_ages, bins, histtype='bar', rwidth=0.6)   # 条状图的宽度
 6 
 7 plt.xlabel('x') # 创建 x 轴标签
 8 plt.ylabel('y') # 创建 y 轴标签
 9 plt.title('interesting graph\ncheck it out')    # 创建标题
10 plt.legend()    # 生成默认图例
11 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第4张图片

 

 

 

 

示例四:散点图

代码:

 1 """ fifth example """
 2 """ 堆叠图 
 3 堆叠图用于显示『部分对整体』随时间的关系。 堆叠图基本上类似于饼图,只是随时间而变化。
 4 
 5 让我们考虑一个情况,我们一天有 24 小时,我们想看看我们如何花费时间。 我们将我们的活动分为:睡觉,吃饭,工作和玩耍。
 6 我们假设我们要在 5 天的时间内跟踪它,因此我们的初始数据将如下所示:
 7 """
 8 days = [1,2,3,4,5]
 9 
10 sleeping = [7,8,6,11,7] # 睡觉时间
11 eating =   [2,3,4,3,2]  # 吃饭时间
12 working =  [7,8,7,2,2]  # 工作时间
13 playing =  [8,5,7,8,13] # 娱乐时间
14 
15 # 为填充区域添加标签
16 plt.plot([], [], color='m', label='sleeping', linewidth=4)
17 plt.plot([], [], color='c', label='eating'  , linewidth=4)
18 plt.plot([], [], color='r', label='working' , linewidth=4)
19 plt.plot([], [], color='k', label='playing' , linewidth=4)
20 
21 plt.stackplot(days, sleeping, eating, working, playing, colors=['m', 'c', 'r', 'k'])
22 
23 plt.xlabel('x axis') # 创建 x 轴标签
24 plt.ylabel('y axis') # 创建 y 轴标签
25 plt.title('interesting graph\ncheck it out')    # 创建标题
26 plt.legend()    # 生成默认图例
27 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第5张图片

 

 

 

 

示例六:饼图

代码:

 1 """ sixth example """
 2 """ 饼图 
 3 # 通常,饼图用于显示部分对于整体的情况,通常以%为单位。 幸运的是,Matplotlib 会处理切片大小以及一切事情,我们只需要提供数值。
 4 # """
 5 slices = [7, 2, 2, 13]      # 指定切片,即每个部分的相对大小。
 6 activities = ['sleeping', 'eating', 'working', 'playing']   # 指定相应切片颜色列表
 7 cols = ['c', 'm', 'r', 'b']
 8 
 9 plt.pie(slices,
10     labels=activities,
11     colors=cols,
12     startangle=90,          # 指定图形的 起始角度 这意味着第一个部分是一个竖直线条
13     shadow=True,
14     explode=(0, 0.1, 0, 0), # eating 突出显示,突出距离 0.1,使用explode拉出一个切片
15     autopct='%1.1f%%')      # autopct,选择将百分比放置到图表上面
16 
17 plt.title('interesting graph\ncheck it out')
18 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第6张图片

 

 

 

 

 

示例七:从文件加载数据

代码:

 1 """ seventh example """
 2 """ 从文件加载数据
 3 从文件中提取数据来图形化
 4 1.首先,我们将使用内置的csv模块加载CSV文件
 5 2.然后我们将展示如何使用 NumPy(第三方模块)加载文件
 6 
 7 """
 8 # failed execution !!!!
 9 # executed
10 
11 import csv
12 
13 x = [] 
14 y = []
15 
16 with  open(r'C:\LeeSRSPrgoramFile\V_vsCode\.vscode\data.csv', 'r') as csvfile:
17     plots = csv.reader(csvfile, delimiter = ',')
18     for row in plots:
19         x.append(int(row[0]))
20         y.append(int(row[1]))
21 
22 plt.plot(x, y, label = 'loaded from file!')
23 
24 plt.xlabel('x axis') # 创建 x 轴标签
25 plt.ylabel('y axis') # 创建 y 轴标签
26 plt.title('interesting graph\ncheck it out')    # 创建标题
27 plt.legend()         # 生成默认图例
28 plt.show()
29 
30 # 从文件加载数据 numpy
31 import matplotlib.pyplot as plt
32 import numpy as np
33 
34 x, y = np.loadtxt(r'C:\LeeSRSPrgoramFile\V_vsCode\.vscode\data.csv', delimiter=',', unpack=True)
35 plt.plot(x,y, label='Loaded from file!')
36 
37 plt.xlabel('x')
38 plt.ylabel('y')
39 plt.title('Interesting Graph\nCheck it out')
40 plt.legend()
41 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第7张图片

 

 

 

 

 

(略过八~十五)

示例十六:

代码:

 1 """ sixteenth example """
 2 """ 实时图表 """
 3 import matplotlib.pyplot as plt
 4 import matplotlib.animation as animation
 5 from matplotlib import style
 6 
 7 """
 8 print(plt.style.available)
 9 我这里它提供了['bmh', 'dark_background', 'ggplot', 'fivethirtyeight', 'grayscale']。
10 """
11 
12 style.use('fivethirtyeight')
13 
14 fig = plt.figure()
15 ax1 = fig.add_subplot(1,1,1)
16 
17 def animate(i):
18     graph_data = open(r'C:\LeeSRSPrgoramFile\V_vsCode\.vscode\example.txt','r').read()
19     lines = graph_data.split('\n')
20     xs = []
21     ys = []
22     for line in lines:
23         if len(line) > 1:
24             x, y = line.split(',')
25             xs.append(x)
26             ys.append(y)
27     ax1.clear()
28     ax1.plot(xs, ys)
29 
30 ani = animation.FuncAnimation(fig, animate, interval=1000)
31 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第8张图片

 

 

 

 

 

(略过 十七、十八)

 

示例十九:子图

代码:(数据不存在)

 1 """ nineteenth example """
 2 """ 子图 """
 3 import random
 4 import matplotlib.pyplot as plt
 5 from matplotlib import style
 6 
 7 style.use('fivethirtyeight')    # 数据不存在
 8 
 9 fig = plt.figure()
10 
11 def create_plots():
12     xs = []
13     ys = []
14 
15     for i in range(10):
16         x = i
17         y = random.randrange(10)
18 
19         xs.append(x)
20         ys.append(y)
21     return xs, ys
22 
23 ax1 = fig.add_subplot(221)
24 ax2 = fig.add_subplot(222)
25 ax3 = fig.add_subplot(212)
26 
27 plt.show()
28 
29 ax1 = plt.subplot2grid((6,1), (0,0), rowspan=1, colspan=1)
30 ax2 = plt.subplot2grid((6,1), (1,0), rowspan=4, colspan=1)
31 ax3 = plt.subplot2grid((6,1), (5,0), rowspan=1, colspan=1)
32 
33 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第9张图片

 

 

 

 

 

示例三十:3D散点图

代码:

 1 """ thritith example """
 2 """ 3D 散点图 """
 3 from mpl_toolkits.mplot3d import axes3d
 4 import matplotlib.pyplot as plt
 5 from matplotlib import style
 6 
 7 style.use('ggplot')
 8 
 9 fig = plt.figure()
10 ax1 = fig.add_subplot(111, projection='3d')
11 
12 x = [1,2,3,4,5,6,7,8,9,10]
13 y = [5,6,7,8,2,5,6,3,7,2]
14 z = [1,2,6,3,2,7,3,3,7,2]
15 
16 x2 = [-1,-2,-3,-4,-5,-6,-7,-8,-9,-10]
17 y2 = [-5,-6,-7,-8,-2,-5,-6,-3,-7,-2]
18 z2 = [1,2,6,3,2,7,3,3,7,2]
19 
20 ax1.scatter(x, y, z, c='g', marker='o')
21 ax1.scatter(x2, y2, z2, c ='r', marker='o')
22 
23 ax1.set_xlabel('x axis')
24 ax1.set_ylabel('y axis')
25 ax1.set_zlabel('z axis')
26 
27 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第10张图片

 

 

 

 

 

示例三十一:3D条状图

代码:

 1 """ thirtyfirst example """
 2 """ 3D 条状图 """
 3 from mpl_toolkits.mplot3d import axes3d
 4 import matplotlib.pyplot as plt
 5 import numpy as np
 6 from matplotlib import style
 7 
 8 style.use('ggplot')
 9 
10 fig = plt.figure()
11 ax1 = fig.add_subplot(111, projection='3d')
12 
13 x3 = [1,2,3,4,5,6,7,8,9,10]
14 y3 = [5,6,7,8,2,5,6,3,7,2]
15 z3 = np.zeros(10)
16 
17 dx = np.ones(10)
18 dy = np.ones(10)
19 dz = [1,2,3,4,5,6,7,8,9,10]
20 
21 ax1.bar3d(x3, y3, z3, dx, dy, dz)
22 
23 ax1.set_xlabel('x axis')
24 ax1.set_ylabel('y axis')
25 ax1.set_zlabel('z axis')
26 
27 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第11张图片

 

 

 

 

 

示例三十二:1. 3D线框图

代码:

 1 """ thirty-second example """
 2 """ 3D 线框图 """
 3 from mpl_toolkits.mplot3d import axes3d
 4 import matplotlib.pyplot as plt
 5 import numpy as np
 6 from matplotlib import style
 7 
 8 style.use('ggplot')
 9 
10 fig = plt.figure()
11 ax1 = fig.add_subplot(111, projection='3d')
12 
13 x, y, z = axes3d.get_test_data()
14 
15 print(axes3d.__file__)
16 ax1.plot_wireframe(x,y,z, rstride = 3, cstride = 3)
17 
18 ax1.set_xlabel('x axis')
19 ax1.set_ylabel('y axis')
20 ax1.set_zlabel('z axis')
21 
22 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第12张图片

 

 

 

 

 

示例三十二:2. 半径为1的球

代码:

 1 """ 半径为 1 的球 """
 2 # 半径为 1 的球
 3 t = np.linspace(0, np.pi * 2, 100)
 4 s = np.linspace(0, np.pi, 100)
 5 t, s = np.meshgrid(t, s)
 6 x = np.cos(t) * np.sin(s)
 7 y = np.sin(t) * np.sin(s)
 8 z = np.cos(s)
 9 ax = plt.subplot(111, projection='3d')
10 ax.plot_wireframe(x, y, z)
11 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第13张图片

 

 

 

 

 

示例三十二:2. 二次抛物面

代码:

 1 """ 二次抛物面 """
 2 # failed
 3 # import numpy as np 
 4 # # import matplotlib.pyplot as plt
 5 
 6 # # 二次抛物面 z = x^2 + y^2
 7 x = np.linspace(-10, 10, 101)
 8 y = x
 9 x, y = np.meshgrid(x, y)
10 z = x ** 2 + y ** 2
11 ax = plt.subplot(111, projection='3d')
12 
13 # ax = plt.subplot(111)
14 
15 ax.plot_wireframe(x, y, z)
16 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第14张图片

 

 

 

 

###############################################################################################################

第二部分

参考连接:

https://www.matplotlib.org.cn/tutorials/introductory/pyplot.html (matplotlib.pyplot 中文教程)

 

示例一:使用 pyplot 生成可视化图像

代码:

1 """ 使用pyplot生成可视化非常快速:"""
2 """
3 您可能想知道为什么x轴的范围是0-3,y轴的范围是1-4。如果为plot()命令提供单个列表或数组,则matplotlib假定它是一系列y值,并自动为您生成x值。由于python范围以0开头,因此默认的x向量与y具有相同的长度,但从0开始。因此x数据为 [0,1,2,3]。
4 """
5 import matplotlib.pyplot as plt
6 # plt.plot([1, 2, 3, 4])
7 plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
8 plt.ylabel('some numbers')
9 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第15张图片

 

 

 

 

 

示例二:格式化绘图的样式

代码:

1 """ 格式化绘图的样式 """
2 """
3 上例中的 axis() 命令采用 [xmin, xmax, ymin, ymax] 列表并指定轴的视口。
4 """
5 import matplotlib.pyplot as plt
6 plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro') # 对于每对x,y对的参数,有一个可选的第三个参数,它是指示绘图的颜色和线型的格式字符串。
7 plt.axis([0, 6, 0, 20]) # x 轴坐标 从 0 到 6, y 轴坐标 从 0 到 20
8 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第16张图片

 

 

 

示例三:常数,平方,立方,指数

代码:

 1 """
 2 如果matplotlib仅限于使用列表,那么数字处理将毫无用处。通常,您将使用numpy数组。实际上,所有序列都在内部转换为numpy数组。 下面的示例说明了使用数组在一个命令中绘制具有不同格式样式的多行。
 3 """
 4 import numpy as np
 5 
 6 # evenly sampled time at 200ms intervals
 7 t = np.arange(0., 5., 0.2)  # 从 浮点 0.0 到 浮点 5.0, 均匀区间 0.2
 8 
 9 # red dashes, blue squares and green triangles
10 # plot 1: x = t, y = t; plot 2: x = t, y = t**2; plot 3: x = t, y = t**3
11 plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^', t, t**t, 'b-')
12 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第17张图片

 

 

 

 

 

示例四:使用关键字字符串绘图

代码:

 
 1 """ 使用关键字字符串绘图 """
 2 """
 3 在某些情况下,您可以使用允许您使用字符串访问特定变量的格式的数据
 4 Matplotlib允许您使用data关键字参数提供此类对象。如果提供,那么您可以生成包含与这些变量对应的字符串的图。
 5 """
 6 
 7 """ numpy 有中文文档 """
 8 
 9 import numpy as np
10 
11 data = {'a': np.arange(50), # 创建一个一维数组
12         'c': np.random.randint(0, 50, 50),  # randint(low, high, size), low = 0, high = 50, size = 50
13         'd': np.random.randn(50)}
14 data['b'] = data['a'] + 10 * np.random.randn(50)
15 data['d'] = np.abs(data['d']) * 100
16 
17 print("a")
18 print(data['a'])
19 """
20 [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
21  24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
22  48 49]
23 """
24 print("b")
25 print(data['b'])
26 """
27 [  0.62943836  17.21409767   9.15333236  -6.20317351  -1.53888847
28  -12.0202326   -3.22548835  11.13534953  13.96745507  26.38984773
29   22.69409017   8.86419068   8.92888006  18.46790678  13.37504354
30   30.83445123  19.47090425  14.90291529  29.80642509  30.94512599
31   22.43131401  36.97826961  23.33682989  27.60329635  34.24190016
32   10.28576809  12.9561741   12.83961587  24.19653172  26.55497339
33   29.34636093  17.82606204  28.43073352  35.93952355  62.68590949
34   42.41798828  26.79822284  32.15448269  41.35891312  45.52420081
35   42.62409069  32.05603638  24.59618139  41.93496607  34.27653275
36   49.63741043  51.14985828  42.88654806  53.86970762  40.44677401]
37 """
38 print("c")
39 print(data['c'])
40 """
41 [32  5 20 43 20 20 16  5 28 17 17 31 39 41 38 34 48 20 41  4 25 12 30 36
42  19 12 11  6  4  6 12 37 40 35 35 22 24 38 49  1 43 48 25 42 17 34 43 42
43   3 15]
44 """
45 print("d")
46 print(data['d'])
47 """
48 d
49 [ 0.62273488 -0.02765768  0.04995371 -0.2198877  -0.8502098  -0.31262268
50  -0.51424326  0.41488156  0.835937    3.52370268 -0.43592109 -0.08318534
51  -0.06548334  0.70974706 -0.44578812  0.45146541  1.07836691 -2.7746048
52   0.17646141  1.51731861 -0.30110688 -1.70045242  1.1230105  -0.33502094
53   0.30202394  0.64661335  1.13310453 -0.43094864 -0.41110585  1.31525723
54   1.55391863  0.91273678  0.1616555  -0.90135308 -1.73413819  0.67115765
55  -1.28802326 -1.81656713  0.22535318 -1.82879701  0.12005613 -0.7980464
56  -0.87905583  0.02397982  0.55560746  0.35077361 -0.09589334 -0.15068644
57  -0.85855859  1.26179932]
58 """
59 
60 plt.scatter('a', 'b', c='c', s='d', data=data)
61 plt.xlabel('entry a')
62 plt.ylabel('entry b')
63 plt.show()
 
   
 

实现:

20190906_matplotlib_学习与快速实现_第18张图片

 

 

 

 

 

示例五:用分类变量绘图

代码:

 

 1 """ 用分类变量绘图 """
 2 """
 3 也可以使用分类变量创建绘图。Matplotlib允许您将分类变量直接传递给许多绘图函数。
 4 """
 5 names = ['group_a', 'group_b', 'group_c']
 6 values = [1, 10, 100]
 7 
 8 plt.figure(1, figsize=(9, 3))
 9 
10 plt.subplot(131)        # 共一行三列,第一个
11 plt.bar(names, values)  # group_a -> 1; group_b -> 10; group_c -> 100;柱形图
12 plt.subplot(132)        # 共一行三列,第二个
13 plt.scatter(names, values)  #散点图
14 plt.subplot(133)        # 共一行三列,第三个
15 plt.plot(names, values) # 标准线性图
16 
17 plt.suptitle('Categorical Plotting')
18 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第19张图片

 

 

 

 

 

示例六:控制线的属性(。。)

代码:

 1 """ 控制线的属性 """
 2 
 3 x = [1,2,3,4,5,6,7,8,9,10]
 4 y = [5,6,7,8,2,5,6,3,7,2]
 5 
 6 x1 = [1,2,3,4,5,6,7,8,9,10]
 7 y1 = [5,6,7,8,2,5,6,3,7,2]
 8 x2 = [-1,-2,-3,-4,-5,-6,-7,-8,-9,-10]
 9 y2 = [-5,-6,-7,-8,-2,-5,-6,-3,-7,-2]
10 
11 # plt.plot(x, y, linewidth=2.0)
12 
13 # line, = plt.plot(x, y, '-')
14 # line.set_antialiased(False) # turn off antialising
15 
16 lines = plt.plot(x1, y1, x2, y2)
17 # use keyword args
18 plt.setp(lines, color='r', linewidth=2.0)
19 # or MATLAB style string value pairs
20 # plt.setp(lines, 'color', 'r', 'linewidth', 2.0)
21 
22 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第20张图片

 

 

 

 

 

示例七:使用多个图形和轴

代码:

 1 """ 使用多个图形和轴 """
 2 """
 3 这里的 figure() 命令是可选的,因为默认情况下将创建 figure(1),就像默认情况下创建 subplot(111) 一样,如果不手动指定任何轴。subplot()命令指定numrows, numcols, plot_number,其中 plot_number 的范围 从1到numrows*numcols。如果 numrows * numcols <10,则subplot命令中的逗号是可选的。因此 subplot(211) 与 subplot(2, 1, 1) 相同。
 4 您可以创建任意数量的子图和轴。如果要手动放置轴,即不在矩形网格上,请使用 axes() 命令,该命令允许您将位置指定为axes([left,bottom,width,height]),其中所有值均为小数(0到1)坐标。有关手动放置轴的示例。
 5 """
 6 import matplotlib.pyplot as plt 
 7 import numpy as np 
 8 
 9 def f(t):
10     return np.exp(-t) * np.cos(2*np.pi*t)
11 
12 t1 = np.arange(0.0, 5.0, 0.1)   # 开始 0.0, 结束 5.0, 区间 0.1
13 t2 = np.arange(0.0, 5.0, 0.02)
14 
15 plt.figure(1)
16 plt.subplot(211)
17 plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')   # 在同一个画布上绘制两幅图,两幅图重叠,图一点,图二线
18 
19 plt.subplot(212)
20 plt.plot(t2, np.cos(2*np.pi*t2), 'r--')
21 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第21张图片

 

 

 

 

 

示例八:创建多个figure()

代码:

 1 """ 
 2 您可以使用具有增加的图号的多个figure() 调用来创建多个数字。当然,每个图形可以包含您心中所需的轴和子图:
 3 """
 4 import matplotlib.pyplot as plt
 5 
 6 plt.figure(1)                # the first figure
 7 plt.subplot(211)             # the first subplot in the first figure
 8 plt.plot([1, 2, 3])
 9 plt.subplot(212)             # the second subplot in the first figure
10 plt.plot([4, 5, 6])
11 plt.title('figure 1 this is')   # 这个写道 figure 1:212 图中了
12 
13 plt.figure(2)                # a second figure
14 plt.plot([4, 5, 6])          # creates a subplot(111) by default
15 plt.title('figure 2 this is')
16 
17 plt.figure(1)                # figure 1 current; subplot(212) still current
18 plt.subplot(211)             # make subplot(211) in figure1 current
19 plt.title('Easy as 1, 2, 3') # subplot 211 title
20 
21 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第22张图片

 

 

 20190906_matplotlib_学习与快速实现_第23张图片

 

 

 

 

 

示例九:在图表中使用文本

代码:

 1 """ 使用文本 """
 2 """
 3 text() 命令可用于在任意位置添加文本,而xlabel(), ylabel() 和 title() 用于在指定位置添加文本(有关更详细的示例,请参见Matplotlib图中的文本)
 4 """
 5 import matplotlib.pyplot as plt
 6 import numpy as np 
 7 
 8 mu, sigma = 100, 15
 9 x = mu + sigma * np.random.randn(10000)
10 
11 # the histogram of the data
12 n, bins, patches = plt.hist(x, 50, density=1, facecolor='g', alpha=0.75)
13 
14 # t = plt.xlabel('my data', fontsize=14, color='red')
15 
16 plt.xlabel('Smarts')
17 plt.ylabel('Probability')
18 plt.title('Histogram of IQ')
19 plt.text(60, .025, r'$\mu=100,\ \sigma=15$')    # x = 60, y = 0.025 处写 text 
20 plt.axis([40, 160, 0, 0.03])    # x = 40~160, y = 0~0.3
21 plt.grid(True)
22 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第24张图片

 

 

 

 

 

示例十:在文本中使用数学表达式

代码:

 1 """ 在文本中使用数学表达式 """
 2 """
 3 matplotlib在任何文本表达式中接受TeX方程表达式。 例如,要在标题中写入表达式σi= 15,您可以编写由美元符号包围的TeX表达式:
 4 
 5 plt.title(r'$\sigma_i=15$')
 6 
 7 标题字符串前面的r很重要 - 它表示该字符串是一个原始字符串,而不是将反斜杠视为python转义
 8 
 9 在此基本示例中,xy(箭头提示)和xytext位置(文本位置)都在数据坐标中。
10 
11 上面的基本text() 命令的使用将文本放在Axes上的任意位置。文本的常见用途是注释绘图的某些功能,而annotate()方法提供帮助功能以使注释变得容易。在注释中,有两点需要考虑:由参数xy表示的注释位置和文本xytext的位置。 这两个参数都是(x,y)元组。
12 """
13 
14 import matplotlib.pyplot as plt
15 import numpy as np 
16 
17 ax = plt.subplot(111)
18 
19 t = np.arange(0.0, 5.0, 0.01)
20 s = np.cos(2*np.pi*t)   # t 传入 s
21 # line, = plt.plot(t, s, lw=2)
22 plt.plot(t, s)
23 
24 plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
25              arrowprops=dict(facecolor='black', shrink=0.05),
26              )
27 
28 plt.ylim(-2, 2)
29 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第25张图片

 

 

 

 

 

示例十一:对数和其他非线性轴

代码:

 1 """ 对数和其他非线性轴 """
 2 """
 3 matplotlib.pyplot 不仅支持线性轴刻度,还支持对数和logit刻度。 如果数据跨越许多数量级,则通常使用此方法。
 4 
 5 则通常使用此方法。 更改轴的比例很容易:
 6 plt.xscale('log')
 7 """
 8 from matplotlib.ticker import NullFormatter  # useful for `logit` scale
 9 
10 # Fixing random state for reproducibility
11 np.random.seed(19680801)
12 
13 # make up some data in the interval ]0, 1[
14 y = np.random.normal(loc=0.5, scale=0.4, size=1000)
15 y = y[(y > 0) & (y < 1)]
16 y.sort()
17 x = np.arange(len(y))
18 
19 # plot with various axes scales
20 plt.figure(1)
21 
22 # linear
23 plt.subplot(221)
24 plt.plot(x, y)
25 plt.yscale('linear')
26 plt.title('linear')
27 plt.grid(True)
28 
29 # log
30 plt.subplot(222)
31 plt.plot(x, y)
32 plt.yscale('log')
33 plt.title('log')
34 plt.grid(True)
35 
36 # symmetric log
37 plt.subplot(223)
38 plt.plot(x, y - y.mean())
39 plt.yscale('symlog', linthreshy=0.01)
40 plt.title('symlog')

 1 plt.grid(True)
 2 
 3 # logit
 4 plt.subplot(224)
 5 plt.plot(x, y)
 6 plt.yscale('logit')
 7 plt.title('logit')
 8 plt.grid(True)
 9 # Format the minor tick labels of the y-axis into empty strings with
10 # `NullFormatter`, to avoid cumbering the axis with too many labels.
11 plt.gca().yaxis.set_minor_formatter(NullFormatter())
12 # Adjust the subplot layout, because the logit one may take more space
13 # than usual, due to y-tick labels like "1 - 10^{-3}"
14 plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.25,
15                     wspace=0.35)
16 
17 plt.show()

实现:

20190906_matplotlib_学习与快速实现_第26张图片

 

转载于:https://www.cnblogs.com/codebeef0911/p/11478181.html

你可能感兴趣的:(python,开发工具,人工智能)