博客
关于我
python可视化编程--matplotlib(二散点图)
阅读量:635 次
发布时间:2019-03-14

本文共 3549 字,大约阅读时间需要 11 分钟。

以下是优化后的文章内容:

Matplotlib绘图实用技巧与示例

Matplotlib是Python中最常用的数据可视化库,它功能强大且灵活,适用于多种数据可视化需求。本文将从基础到高级技巧,带你逐步学习Matplotlib的使用方法。

1. 画单个点

为了绘制单个点,我们可以使用 plt.scatter() 方法。以下是一个简单的例子:

import matplotlib.pyplot as plt
plt.scatter(2, 4, marker='o', c='b') # c代表颜色参数
plt.title('散点图', fontsize=14)
plt.xlabel('x轴', fontsize=14)
plt.ylabel('y轴', fontsize=14)
plt.ticklabel_format(axis='both')
plt.show()
图片说明:

根据上述代码,生成的散点图将展示一个标记为圆点(o)的点,位置为(2,4),点的颜色为蓝色。

2. 自动计算

当数据量较多或需要生成多个点时,可以通过编程方式自动生成数据点。以下是一个自动计算的示例:

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1, 5) # 生成x值:1, 2, 3, 4
y = [x**2 for x in x] # 根据x计算y值,例如:1, 4, 9, 16
plt.scatter(x, y, c=(0, 0.5, 0.3)) # c为颜色参数,格式为RGB
plt.title('自动计算的散点图', fontsize=14)
plt.xlabel('x轴', fontsize=14)
plt.ylabel('y轴', fontsize=14)
plt.ticklabel_format(axis='both')
plt.show()
图片说明:

该图表将自动绘制x值从1到4的四个点,y值分别为1, 4, 9, 16,点的颜色为RGB颜色空间中的(0,0.5,0.3)。

3. 颜色映射

通过颜色映射,我们可以将数据点根据某种规则自动分配颜色。例如,可以让颜色随y值变化:

import matplotlib.pyplot as plt
x = np.arange(1, 5)
y = [x**2 for x in x]
plt.scatter(x, y, c=y, cmap=plt.cm.gist_rainbow, s=20) # cmap为color map,gist_rainbow是预定义的颜色映射
plt.title('颜色映射散点图', fontsize=14)
plt.xlabel('x轴', fontsize=14)
plt.ylabel('y轴', fontsize=14)
plt.show()
图片说明:

图表中每个点的颜色根据y值随机分配,使用gist_rainbow颜色映射。

4. 自动保存图表

为了确保绘制出来的图表不会被关闭,可以使用 plt.savefig() 方法保存图表:

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1, 500)
y = [x**2 for x in x]
plt.scatter(x, y, c=y, cmap=plt.cm.hot, s=10)
plt.title('自动保存的散点图', fontsize=14)
plt.xlabel('x轴', fontsize=14)
plt.ylabel('y轴', fontsize=14)
plt.ticklabel_format(axis='both')
plt.savefig('aaa.png') # 将图表存为aaa.png文件
图片说明:

例如,运行上述代码后,将在当前目录下生成一个名为aaa.png的图表文件。

5. 随机漫步

我们可以使用随机漫步模拟随机分布的数据点。以下是随机漫步的实现:

# randomMy.py文件
from random import choice
class RandomWalk:
def __init__(self, num_points=50):
self.num_points = num_points
self.x_values = [0]
self.y_values = [0]
def fill_walk(self):
while len(self.x_values) < self.num_points:
x_direction = choice([1, -1])
x_distance = choice([0, 1, 2, 3, 4])
x_step = x_direction * x_distance
y_direction = choice([1, -1])
y_distance = choice([0, 1, 2, 3, 4])
y_step = y_direction * y_distance
if x_step == 0 and y_step == 0:
continue
next_x = self.x_values[-1] + x_step
next_y = self.y_values[-1] + y_step
self.x_values.append(next_x)
self.y_values.append(next_y)

使用示例

hello.py中:

from randomMy import RandomWalk
rwn = RandomWalk()
rwn.fill_walk()
plt.scatter(rwn.x_values, rwn.y_values, c=range(len(rwn.x_values)), cmap= plt.cm.hot, s=15)
plt.scatter(0,0, c='green', edgecolors='none', s=100) # 绘制原点
plt.scatter(rwn.x_values[-1], rwn.y_values[-1], c='red', edgecolors='none', s=100) # 绘制终点
plt.show()
keep_running = input("继续吗?(y/n):")
图片说明:

上述代码将绘制一个随机漫步生成的散点图,并使用c参数将每个点的颜色根据它们在序列中的位置分配。同时,还绘制了原点和终点,使用不同的颜色表示。

6. 动态更新绘图

如果希望在代码运行过程中动态展示随机漫步生成的点,可以使用以下方式:

from randomMy import RandomWalk
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 6)) # 调整图表大小
while True:
rwn = RandomWalk()
rwn.fill_walk()
for point in rwn.x_values:
plt.scatter(rwn.x_values, rwn.y_values, c=range(len(rwn.x_values)), cmap= plt.cm.hot, s=15)
plt.draw() # 动态更新图表
plt.show()
keep_running = input("继续吗?(y/n):")
if keep_running != 'y':
break
图片说明:

上述代码会在每次迭代时重绘图表,每次添加一个新的随机漫步点,并使用不同的颜色表示不同的步骤。

 

请根据需要调整代码和绘图内容,确保对应的图片和功能与上述代码一致。

转载地址:http://qzvoz.baihongyu.com/

你可能感兴趣的文章
nginx负载均衡和反相代理的配置
查看>>
nginx负载均衡器处理session共享的几种方法(转)
查看>>
nginx负载均衡的5种策略(转载)
查看>>
nginx负载均衡的五种算法
查看>>
nginx转发端口时与导致websocket不生效
查看>>
Nginx运维与实战(二)-Https配置
查看>>
Nginx配置Https证书
查看>>
Nginx配置ssl实现https
查看>>
Nginx配置TCP代理指南
查看>>
Nginx配置——不记录指定文件类型日志
查看>>
nginx配置一、二级域名、多域名对应(api接口、前端网站、后台管理网站)
查看>>
Nginx配置代理解决本地html进行ajax请求接口跨域问题
查看>>
nginx配置全解
查看>>
Nginx配置参数中文说明
查看>>
nginx配置域名和ip同时访问、开放多端口
查看>>
Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
查看>>
Nginx配置如何一键生成
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Nginx配置负载均衡到后台网关集群
查看>>