博客
关于我
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/

你可能感兴趣的文章
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'
查看>>
No module named 'crispy_forms'等使用pycharm开发
查看>>
No module named cv2
查看>>
No module named tensorboard.main在安装tensorboardX的时候遇到的问题
查看>>
No module named ‘MySQLdb‘错误解决No module named ‘MySQLdb‘错误解决
查看>>
No new migrations found. Your system is up-to-date.
查看>>
No qualifying bean of type XXX found for dependency XXX.
查看>>
No qualifying bean of type ‘com.netflix.discovery.AbstractDiscoveryClientOptionalArgs<?>‘ available
查看>>
No resource identifier found for attribute 'srcCompat' in package的解决办法
查看>>
no session found for current thread
查看>>
No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
查看>>
NO.23 ZenTaoPHP目录结构
查看>>
no1
查看>>
NO32 网络层次及OSI7层模型--TCP三次握手四次断开--子网划分
查看>>
NOAA(美国海洋和大气管理局)气象数据获取与POI点数据获取
查看>>
NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata
查看>>
node exporter完整版
查看>>