简单介绍python中的绘图
千山网站建设公司创新互联,千山网站设计制作,有大型网站制作公司丰富经验。已为千山成百上千家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的千山做网站的公司定做!
绘制简单的折线图
散点图
设置每个坐标轴的取值范围
将主点颜色改成白,边缘颜色为红
自动保存图表
随机漫步
随机漫步渐变色
小知识点
绘制起点和终点
画布尺寸
隐藏坐标轴
pygal
roll one dice
绘制简单的折线图
首先下载matplotlib安装程序
import matplotlib.pyplot as plt
x_values = [1, 2, 3, 4, 5, 6] # 代表x轴的值
y_values = [1, 2, 4, 8, 16, 32] # 代表与x相对应的y轴的值
# plt.plot(y_values, linewidth=3)
plt.plot(x_values, y_values, linewidth=3)
# 设置图表标题,并改变横纵坐标的名称
plt.title("figure test", fontsize=24)
plt.xlabel("xValue", fontsize=14)
plt.ylabel("yValue", fontsize=14)
# 更改刻度标记的大小
plt.tick_params(axis='both', labelsize=12)
plt.show() # 打开matplotlib查看器,显示绘制的图形
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

散点图
import matplotlib.pyplot as plt
# 绘制单个x = 2, y = 4坐标轴上的点
# plt.scatter(2, 4, s=100) # s用来更改单个点的大小
# 绘制一群点
x_values = [1, 2, 3, 4, 5]
y_values = [1, 2, 4, 8, 16]
plt.scatter(x_values, y_values, s=100)
# 设置图表标题,并改变横纵坐标的名称
plt.title("figure test", fontsize=24)
plt.xlabel("xValue", fontsize=14)
plt.ylabel("yValue", fontsize=14)
# 更改刻度标记的大小
plt.tick_params(axis='both', which = 'major', labelsize=12)
plt.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

另一种方法绘制此图:(自动生成数据)
import matplotlib.pyplot as plt
# 绘制单个x = 2, y = 4坐标轴上的点
# plt.scatter(2, 4, s=100) # s用来更改单个点的大小
# 绘制一群点
i = 1
x_values = list(range(1, 6))
y_values = [2**(i-1) for i in x_values]
plt.scatter(x_values, y_values, s=100)
# 设置图表标题,并改变横纵坐标的名称
plt.title("figure test", fontsize=24)
plt.xlabel("xValue", fontsize=14)
plt.ylabel("yValue", fontsize=14)
# 更改刻度标记的大小
plt.tick_params(axis='both', which='major', labelsize=12)
plt.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
设置每个坐标轴的取值范围
plt.axis([0, 100, 0, 1000])
1
1
前面对应x, 后面对应y

将主点颜色改成白,边缘颜色为红
plt.scatter(x_values, y_values, c='white', edgecolor='red', s=20)
plt.scatter(x_values, y_values, c=(1, 1, 1), edgecolor='red', s=20)
1
2
1
2
c for color; 含三个0~1之间的小数值
颜色映射(colormap)
plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Reds,
edgecolor='none', s=40)
1
2
1
2
要了解pyplot中所有的颜色映射:
自动保存图表
plt.savefig(‘Figure1.png’, bbox_inches=‘tight’)
第一个参数表示名字, 将其以Figure1.png存储在example.py同一个文件夹里
第二个参数表示将图表多余的空白区域裁剪掉
随机漫步
随机游走(random walk)也称随机漫步,随机行走等是指基于过去的表现,无法预测将来的发展步骤和方向。核心概念是指任何无规则行走者所带的守恒量都各自对应着一个扩散运输定律 ,接近于布朗运动,是布朗运动理想的数学状态,现阶段主要应用于互联网链接分析及金融股票市场中。(来自百度百科)
import matplotlib.pyplot as plt
from random import choice
class RandomWalk:
def __init__(self, num_points=5000):
self.num_points = num_points
# 从(0, 0)开始出发
self.x_values = [0]
self.y_values = [0]
def start_walk(self):
while len(self.x_values) self.num_points:
x_direction = choice([-1, 1])
x_distance = choice([0, 1, 2])
x_walk = x_direction * x_distance
y_direction = choice([1, -1])
y_distance = choice([0, 10, 20])
y_walk = y_direction * y_distance
# 拒绝原地不动
if x_walk == 0 and y_walk == 0:
continue
# 计算下一个点的x和y值
next_x = self.x_values[-1] + x_walk # 从x_values的倒数第一个开始加上x方向走的距离
next_y = self.y_values[-1] + y_walk # 从y_values的倒数第一个开始加上y方向走的距离
self.x_values.append(next_x)
self.y_values.append(next_y)
randomwalk = RandomWalk()
randomwalk.start_walk()
plt.scatter(randomwalk.x_values, randomwalk.y_values, s=5)
plt.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

随机漫步渐变色
randomwalk = RandomWalk()
randomwalk.start_walk()
point_numbers = list(range(randomwalk.num_points))
plt.scatter(randomwalk.x_values, randomwalk.y_values, c=point_numbers, cmap=plt.cm.Reds, edgecolor='none', s=5)
plt.show()
1
2
3
4
5
6
7
1
2
3
4
5
6
7

小知识点
绘制起点和终点
randomwalk = RandomWalk()
randomwalk.start_walk()
point_numbers = list(range(randomwalk.num_points))
plt.scatter(randomwalk.x_values, randomwalk.y_values, c=point_numbers, cmap=plt.cm.Reds, edgecolor='none', s=5)
# 绘制起点和终点
plt.scatter(0, 0, c='green', edgecolors='none', s=100)
plt.scatter(randomwalk.x_values[-1], randomwalk.y_values[-1], c='red', edgecolors='none', s=100)
plt.show()
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11

画布尺寸
plt.figure(dpi=128, figsize=(10, 6))
单位为英寸;函数figure()用于指定图表的宽度、高度、分辨率和背景色。
dpi: 传递分辨率
隐藏坐标轴
plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)
pygal
roll one dice
from random import randint
import pygal
class Die:
def __init__(self, num_sides=6):
self.num_sides = num_sides
def roll(self):
return randint(1, self.num_sides)
die = Die()
results = []
# 掷100次骰子
for roll_num in range(100):
result = die.roll()
results.append(result)
frequencies = []
for value in range(1, die.num_sides + 1):
frequency = results.count(value)
frequencies.append(frequency)
horizontal_bar_chart = pygal.Bar()
horizontal_bar_chart.title = "randomly roll a 6-side die"
horizontal_bar_chart.x_labels = ['1', '2', '3', '4', '5', '6']
horizontal_bar_chart.x_title = "Result"
horizontal_bar_chart.y_title = "Frequency"
horizontal_bar_chart.add('6side', frequencies)
horizontal_bar_chart.render_to_file('die_visual.svg')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
作者:迈克尔·贝耶勒(Michael Beyeler)
如需转载请联系华章 科技
如果已安装Anaconda Python版本,就已经安装好了可以使用的 Matplotlib。否则,可能要访问官网并从中获取安装说明:
正如使用np作为 NumPy 的缩写,我们将使用一些标准的缩写来表示 Matplotlib 的引入:
在本书中,plt接口会被频繁使用。
让我们创建第一个绘图。
假设想要画出正弦函数sin(x)的线性图。得到函数在x坐标轴上0≤x<10内所有点的值。我们将使用 NumPy 中的 linspace 函数来在x坐标轴上创建一个从0到10的线性空间,以及100个采样点:
可以使用 NumPy 中的sin函数得到所有x点的值,并通过调用plt中的plot函数把结果画出来:
你亲自尝试了吗?发生了什么吗?有没有什么东西出现?
实际情况是,取决于你在哪里运行脚本,可能无法看到任何东西。有下面几种可能性:
1. 从.py脚本中绘图
如果从一个脚本中运行 Matplotlib,需要加上下面的这行调用:
在脚本末尾调用这个函数,你的绘图就会出现!
2. 从 IPython shell 中绘图
这实际上是交互式地执行Matplotlib最方便的方式。为了让绘图出现,需要在启动 IPython 后使用所谓的%matplotlib魔法命令。
接下来,无须每次调用plt.show()函数,所有的绘图将会自动出现。
3. 从 Jupyter Notebook 中绘图
如果你是从基于浏览器的 Jupyter Notebook 中看这段代码,需要使用同样的%matplotlib魔法命令。然而,也可以直接在notebook中嵌入图形,这会有两种输出选项:
在本书中,将会使用inline选项:
现在再次尝试一下:
上面的命令会得到下面的绘图输出结果:
如果想要把绘图保存下来留作以后使用,可以直接在 IPython 或者 Jupyter Notebook 使用下面的命令保存:
仅需要确保你使用了支持的文件后缀,比如.jpg、.png、.tif、.svg、.eps或者.pdf。
作为本章最后一个测试,让我们对外部数据集进行可视化,比如scikit-learn中的数字数据集。
为此,需要三个可视化工具:
那么开始引入这些包吧:
第一步是载入实际数据:
如果没记错的话,digits应该有两个不同的数据域:data域包含了真正的图像数据,target域包含了图像的标签。相对于相信我们的记忆,我们还是应该对digits稍加 探索 。输入它的名字,添加一个点号,然后按Tab键:digits.TAB,这个操作将向我们展示digits也包含了一些其他的域,比如一个名为images的域。images和data这两个域,似乎简单从形状上就可以区分。
两种情况中,第一维对应的都是数据集中的图像数量。然而,data中所有像素都在一个大的向量中排列,而images保留了各个图像8×8的空间排列。
因此,如果想要绘制出一副单独的图像,使用images将更加合适。首先,使用NumPy的数组切片从数据集中获取一幅图像:
这里是从1797个元素的数组中获取了它的第一行数据,这行数据对应的是8×8=64个像素。下面就可以使用plt中的imshow函数来绘制这幅图像:
上面的命令得到下面的输出:
此外,这里也使用cmap参数指定了一个颜色映射。默认情况下,Matplotlib 使用MATLAB默认的颜色映射jet。然而,在灰度图像的情况下,gray颜色映射更有效。
最后,可以使用plt的subplot函数绘制全部数字的样例。subplot函数与MATLAB中的函数一样,需要指定行数、列数以及当前的子绘图索引(从1开始计算)。我们将使用for 循环在数据集中迭代出前十张图像,每张图像都分配到一个单独的子绘图中。
这会得到下面的输出结果:
关于作者:Michael Beyeler,华盛顿大学神经工程和数据科学专业的博士后,主攻仿生视觉计算模型,用以为盲人植入人工视网膜(仿生眼睛),改善盲人的视觉体验。 他的工作属于神经科学、计算机工程、计算机视觉和机器学习的交叉领域。同时他也是多个开源项目的积极贡献者。
本文摘编自《机器学习:使用OpenCV和Python进行智能图像处理》,经出版方授权发布。
1、返回原点
home()
无参数,直接调用
2、画圆
circle(radius,extent,steps)
参数:radius 指定圆的半径,extent 绘制圆弧的夹角,steps 多边形变数不给默认值
3、画点
dot(size,color)
参数:size绘制点的直径值,color点的色彩
4、印章
stamp()
无参数
5、清除印章
clearstamp(stampid)清楚印章
clearstamps(n=None) 清楚多个印章
参数:stampid是调用stamp函数返回的ID值,n为None则删除全部印章,如果n0则删除前n个印章,n
接受自己的普通,然后全力以赴的出众,告诉自己要努力,但不要着急....
当然, 这个结果并不是我真正想要的,Pass, 太丑了!
好吧,安排,我们先看下实现后的效果!
这个效果自然就比之前的好多了!
实现python散点图绘制需要用到matplotlib库, matplotlib库是专门用于可视化绘图的工具库;学习一个新的库当然看官方文档了:
实现思路:
matplotlib.pyplot.scatter() 函数是专门绘制散点图的函数:
matplotlib.pyplot.scatter ( x, y , s=None , c=None , marker=None , cmap=None , norm=None , vmin=None , vmax=None , alpha=None , linewidths=None , verts=None , edgecolors=None , ***, data=None , ** kwargs ) **
plt.scatter(observation, estimate, c=Z1, cmap=colormap, marker=".", s=marker_size, norm=colors.LogNorm(vmin=Z1.min(), vmax=0.5 * Z1.max()))
其中:
1、c参数为计算的散点密度;
2、cmap为色带(matplotlib里面自带了很多色带可供选择),参见:
3、由于计算的散点密度数值大小分散,因此利用norm参数对散点密度Z1进行归一化处理(归一化方式很多,参见colors类),并给归一化方式设置色带刻度的最大最小值vmin和vmax(一般这两个参数就是指定散点密度的最小值和最大值),这样就建立起了密度与色带的映射关系。
(这里的结果与前面展示的相比改变了计算散点密度的半径:radius = 3以及绘制散点图的散点大小marksize)
作者能力水平有限,欢迎各位批评指正!