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

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

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

Matplotlib绘图实用技巧与示例

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

1. 画单个点

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

import matplotlib.pyplot as pltplt.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 npimport matplotlib.pyplot as pltx = np.arange(1, 5)  # 生成x值:1, 2, 3, 4y = [x**2 for x in x]  # 根据x计算y值,例如:1, 4, 9, 16plt.scatter(x, y, c=(0, 0.5, 0.3))  # c为颜色参数,格式为RGBplt.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 pltx = 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 npimport matplotlib.pyplot as pltx = 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 choiceclass 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 RandomWalkrwn = 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 RandomWalkimport matplotlib.pyplot as pltplt.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/

你可能感兴趣的文章
NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
查看>>
NLP:使用 SciKit Learn 的文本矢量化方法
查看>>
Nmap扫描教程之Nmap基础知识
查看>>
Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
查看>>
NMAP网络扫描工具的安装与使用
查看>>
NMF(非负矩阵分解)
查看>>
nmon_x86_64_centos7工具如何使用
查看>>
NN&DL4.1 Deep L-layer neural network简介
查看>>
NN&DL4.3 Getting your matrix dimensions right
查看>>
NN&DL4.8 What does this have to do with the brain?
查看>>
nnU-Net 终极指南
查看>>
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
NO 157 去掉禅道访问地址中的zentao
查看>>
no available service ‘default‘ found, please make sure registry config corre seata
查看>>
no connection could be made because the target machine actively refused it.问题解决
查看>>
No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
查看>>
No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
查看>>
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
查看>>
No mapping found for HTTP request with URI [/...] in DispatcherServlet with name ...的解决方法
查看>>
No mapping found for HTTP request with URI [/logout.do] in DispatcherServlet with name 'springmvc'
查看>>