本文共 3549 字,大约阅读时间需要 11 分钟。
以下是优化后的文章内容:
Matplotlib是Python中最常用的数据可视化库,它功能强大且灵活,适用于多种数据可视化需求。本文将从基础到高级技巧,带你逐步学习Matplotlib的使用方法。
为了绘制单个点,我们可以使用 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),点的颜色为蓝色。
当数据量较多或需要生成多个点时,可以通过编程方式自动生成数据点。以下是一个自动计算的示例:
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)。
通过颜色映射,我们可以将数据点根据某种规则自动分配颜色。例如,可以让颜色随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颜色映射。
为了确保绘制出来的图表不会被关闭,可以使用 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的图表文件。
我们可以使用随机漫步模拟随机分布的数据点。以下是随机漫步的实现:
# 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参数将每个点的颜色根据它们在序列中的位置分配。同时,还绘制了原点和终点,使用不同的颜色表示。
如果希望在代码运行过程中动态展示随机漫步生成的点,可以使用以下方式:
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/