from PIL import Image, ImageDraw # 创建一个空白图像,用于拼接K线图 canvas_width = 5000 # 大图的宽度 canvas_height = 5000 # 大图的高度 canvas = Image.new('RGB', (canvas_width, canvas_height), 'white') # 读取并拼接K线图 x_offset = 0 # 当前拼接位置的横坐标 for i in range(1, 15): filename = f'E:/应统案例大赛/附件1-股票交易数据/a{i}.jpg' image = Image.open(filename) # 将当前K线图拼接到大图中 canvas.paste(image, (x_offset, 0)) # 更新下一个K线图的横坐标 x_offset += image.width # 保存大图 canvas.save('all_stocks.png')调整代码,使14张图分布均匀
时间: 2024-01-02 15:03:27 浏览: 23
如果您想要让14张K线图在大图中分布均匀,可以通过以下方式来调整代码:
```
from PIL import Image, ImageDraw
# 创建一个空白图像,用于拼接K线图
canvas_width = 5000 # 大图的宽度
canvas_height = 5000 # 大图的高度
canvas = Image.new('RGB', (canvas_width, canvas_height), 'white')
# 读取并拼接K线图
x_offset = 0 # 当前拼接位置的横坐标
y_offset = 0 # 当前拼接位置的纵坐标
max_height = 0 # 当前行中最高的K线图高度
for i in range(1, 15):
filename = f'E:/应统案例大赛/附件1-股票交易数据/a{i}.jpg'
image = Image.open(filename)
# 如果当前行已经没有足够的宽度容纳下一个K线图,就换行
if x_offset + image.width > canvas_width:
x_offset = 0
y_offset += max_height
max_height = 0
# 计算拼接位置,并将当前K线图拼接到大图中
x = x_offset
y = y_offset
canvas.paste(image, (x, y))
# 更新下一个K线图的横坐标、纵坐标和最高高度
x_offset += image.width
max_height = max(max_height, image.height)
# 保存大图
canvas.save('all_stocks.png')
```
在这个示例代码中,我们首先创建一个5000 x 5000的空白图像,用于拼接K线图。然后,我们循环读取14张图片,并根据它们的宽度和高度,计算拼接位置。如果当前行已经没有足够的宽度容纳下一个K线图,就换行;否则就将当前K线图拼接到当前行的末尾。在拼接K线图的过程中,我们还记录了当前行中最高的K线图高度,以便在下一行中对齐。最后,我们使用`Image.save`函数保存大图为一个文件。
希望这个示例代码可以帮助您实现将14张K线图在大图中分布均匀的效果。如果您需要进一步调整图像的布局和分布,可以根据需要修改代码中的参数。