plt.plot绘制多种颜色的方格
时间: 2023-11-16 22:56:59 浏览: 139
要绘制多种颜色的方格,可以使用plt.plot()函数中的color参数。首先,需要定义一个列表来存储每个方格的颜色,然后在plt.plot()函数中使用该列表作为color参数的值。例如,下面的代码将绘制一个10x10的方格,其中每个方格的颜色随机生成:
```
import matplotlib.pyplot as plt
import numpy as np
# 生成10x10的方格
grid = np.random.randint(0, 2, size=(10, 10))
# 定义颜色列表
colors = ['white', 'black']
# 绘制方格
plt.imshow(grid, cmap=plt.cm.get_cmap('binary', len(colors)))
for i in range(grid.shape[0]):
for j in range(grid.shape[1]):
plt.text(j, i, grid[i, j], ha='center', va='center', color=colors[grid[i, j]])
# 隐藏坐标轴
plt.axis('off')
plt.show()
```
该代码中,使用numpy库生成了一个10x10的随机方格,然后定义了一个颜色列表,包含了白色和黑色。接着,使用plt.imshow()函数绘制方格,并使用plt.text()函数在每个方格中心添加数字。最后,使用plt.axis('off')函数隐藏坐标轴,使图像更加美观。
相关问题
用python实现以下问题4.【算法】最短连线问题(16分) 可以自定义方格地图大小(ab) 可以设定点数,可以随机生成点,也可预置点的坐标 生成最短连线,如不止一种结果,用多种颜色显示。 可自定义连线规则(如只能直线,或者可以斜线)
以下是一个简单的 Python 实现,实现了最短连线问题的求解。具体实现包含以下几个步骤:
1. 定义点类和连线类,用于表示地图上的点和连线。
2. 根据用户输入或随机生成点的坐标,创建点对象并存储在列表中。
3. 根据用户输入或默认规则,创建连线对象并存储在列表中。
4. 使用 Kruskal 算法求解最小生成树。
5. 将最小生成树的连线绘制在地图上,并用不同颜色表示。
```python
import random
import math
import matplotlib.pyplot as plt
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
class Line:
def __init__(self, start, end):
self.start = start
self.end = end
self.length = math.sqrt((end.x - start.x) ** 2 + (end.y - start.y) ** 2)
def generate_points(num_points, a, b):
points = []
for i in range(num_points):
x = random.uniform(0, a)
y = random.uniform(0, b)
points.append(Point(x, y))
return points
def generate_lines(points, rule):
lines = []
for i in range(len(points)):
for j in range(i+1, len(points)):
if rule == "straight":
if points[i].x == points[j].x or points[i].y == points[j].y:
lines.append(Line(points[i], points[j]))
elif rule == "diagonal":
lines.append(Line(points[i], points[j]))
return lines
def kruskal(points, lines):
parent = {}
rank = {}
def find(node):
if parent[node] != node:
parent[node] = find(parent[node])
return parent[node]
def(node1, node2):
root1 = find(node1)
root2 = find(node2)
if root1 != root2:
if rank[root1] > rank[root2]:
parent[root2] = root1
else:
parent[root1] = root2
if rank[root1] == rank[root2]:
rank[root2] += 1
for point in points:
parent[point] = point
rank[point] = 0
lines.sort(key=lambda x: x.length)
min_spanning_tree = []
for line in lines:
if find(line.start) != find(line.end):
min_spanning_tree.append(line)
union(line.start, line.end)
return min_spanning_tree
def draw_map(points, lines, min_spanning_tree):
colors = ['r', 'g', 'b', 'c', 'm', 'y', 'k']
for line in min_spanning_tree:
color = random.choice(colors)
plt.plot([line.start.x, line.end.x], [line.start.y, line.end.y], color=color)
for point in points:
plt.plot(point.x, point.y, 'ko')
plt.show()
if __name__ == '__main__':
a = 10
b = 10
num_points = 10
rule = "straight"
points = generate_points(num_points, a, b)
lines = generate_lines(points, rule)
min_spanning_tree = kruskal(points, lines)
draw_map(points, lines, min_spanning_tree)
```
上述代码实现了一个简单的最短连线问题求解器,可以根据用户的输入或默认规则生成地图和连线,并使用 Kruskal 算法求解最小生成树。最后,将最小生成树的连线绘制在地图上,并用不同颜色表示。
可以自定义方格地图大小(ab) 可以设定点数,可以随机生成点,也可预置点的坐标 生成最短连线,如不止一种结果,用多种颜色显示。 可自定义连线规则(如只能直线,或者可以斜线)
该功能可以通过使用Python编程语言和相关的库来实现。下面是一个简单的实现示例:
```python
import random
import math
import matplotlib.pyplot as plt
# 定义方格地图的大小
a = 10
b = 10
# 定义点的数量
num_points = 10
# 定义点的坐标
points = [(random.randint(0, a), random.randint(0, b)) for i in range(num_points)]
# 定义连线规则
def can_connect(p1, p2):
# 只能直线连接
if p1[0] == p2[0] or p1[1] == p2[1]:
return True
# 不允许斜线连接
else:
return False
# 计算两点之间的距离
def distance(p1, p2):
return math.sqrt((p1[0]-p2[0])**2 + (p1[1]-p2[1])**2)
# 生成最短连线
def get_shortest_path(points):
# 初始化路径和距离
path = []
dist = 0
# 选择起点
start = points[0]
path.append(start)
points.remove(start)
# 选择最近的点
while points:
nearest = min(points, key=lambda x: distance(path[-1], x))
if can_connect(path[-1], nearest):
dist += distance(path[-1], nearest)
path.append(nearest)
points.remove(nearest)
else:
break
# 连接起点和终点
dist += distance(path[-1], start)
path.append(start)
return path, dist
# 生成多种颜色的连线
def draw_path(paths):
colors = ['r', 'g', 'b', 'c', 'm', 'y', 'k']
for i, path in enumerate(paths):
x = [p[0] for p in path]
y = [p[1] for p in path]
plt.plot(x, y, colors[i % len(colors)])
plt.show()
# 测试程序
paths = []
for i in range(3):
random.shuffle(points)
path, dist = get_shortest_path(points[:])
paths.append(path)
draw_path(paths)
```
在上面的代码中,我们首先定义了方格地图的大小和点的数量,然后使用随机函数生成点的坐标。接着,我们定义了连线规则和计算两点之间距离的函数。最后,我们使用贪心算法计算出最短的路径,并使用不同的颜色绘制出多种结果。
需要注意的是,这只是一个简单的实现示例,实际应用中可能需要更加复杂的算法和数据结构来解决问题。
阅读全文