python绘制svg格式图片不能展示,且图片超出了画布范围。

博客讲述了作者在使用matplotlib库绘制SVG格式图片时遇到的问题,即执行plt.show()后无法直接展示图片,且图像边界超出画布。作者发现错误源自设置matplotlib后端为SVG的代码行。删除该行后,问题得到解决,图片能够正常显示且布局不再异常。解决方案是注释掉matplotlib.rcParams['backend'] = 'SVG'这行代码。
摘要由CSDN通过智能技术生成

之前在网上找的绘制svg格式图片的源代码,其调用库的几行代码如下所示:

import matplotlib.pyplot as plt
import numpy as np
import matplotlib
from matplotlib.pyplot import MultipleLocator
matplotlib.rcParams["backend"] = "SVG"

刚开始能正常使用,后来不知道是不是因为库更新的原因。再次使用上述代码画图时,执行plt.show()时发现报错:

UserWarning: Matplotlib is currently using svg, which is a non-GUI backend, so cannot show the figure.

图片不能直接展示。并且生成的图片的下侧和右侧会超出画布范围,并且上侧会留出较大空白,如下图所示(红圈为标记出的问题)。需要通过inkscape或其他软件进行二次调整,比较麻烦。

后来发现,应该是之前使用的代码中,matplotlib.rcParams["backend"] = "SVG"这行代码存在问题,将这行代码删掉后,之前画图的源码就能正常使用了。效果如下所示:

 可以发现,在注释掉matplotlib.rcParams["backend"] = "SVG"这行代码后,plt.show()能正常工作,且画出来的图片也不存在什么问题。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 您好,以下是回答: 可以使用Python中的chess库来绘制国际象棋棋盘。首先需要安装chess库,可以使用pip install chess命令进行安装。然后可以使用以下代码来绘制棋盘: import chess import chess.svg board = chess.Board() svg_board = chess.svg.board(board=board) with open("chessboard.svg", "w") as f: f.write(svg_board) 这段代码会生成一个SVG格式的棋盘文件,可以使用浏览器或者其他支持SVG格式的软件来查看。如果需要在Python显示棋盘,可以使用以下代码: import chess import chess.svg from IPython.display import SVG board = chess.Board() svg_board = chess.svg.board(board=board) SVG(svg_board) 这段代码会在Jupyter Notebook或者其他支持IPython的环境中显示棋盘。 ### 回答2: 要使用Python绘制国际象棋棋盘,我们可以使用Python的图形库,如`turtle`或`pygame`来实现。 使用Python的`turtle`库,可以按照如下方式绘制一个国际象棋棋盘: ```python import turtle def draw_chessboard(): square_size = 50 border_size = square_size * 2 turtle.speed(0) # 设置绘制速度最快 turtle.penup() # 抬起画笔 turtle.goto(-200, 200) # 将画笔移动到左上角位置 turtle.pendown() # 放下画笔 # 绘制国际象棋棋盘 for i in range(8): for j in range(8): if (i + j) % 2 == 0: turtle.begin_fill() # 开始填充颜色 turtle.fillcolor("white") else: turtle.begin_fill() # 开始填充颜色 turtle.fillcolor("gray") for _ in range(4): turtle.forward(square_size) turtle.right(90) turtle.end_fill() # 结束填充颜色 turtle.forward(square_size) turtle.backward(square_size * 8) turtle.right(90) turtle.forward(square_size) turtle.left(90) turtle.penup() turtle.goto(-200 - border_size, 200 + border_size) turtle.pendown() turtle.forward(square_size * 8 + border_size * 2) turtle.right(90) turtle.forward(square_size * 8 + border_size * 2) turtle.right(90) turtle.forward(square_size * 8 + border_size * 2) turtle.right(90) turtle.forward(square_size * 8 + border_size * 2) turtle.right(90) turtle.hideturtle() # 隐藏画笔 turtle.done() # 绘制完成 draw_chessboard() ``` 以上是使用Python中的`turtle`库绘制国际象棋棋盘的一个示例代码。 ### 回答3: 要使用Python绘制一个国际象棋棋盘,可以利用turtle库进行绘图。首先,导入turtle库并创建一个画布。然后,设置画笔的颜色、绘制速度和起始位置。 接下来,使用循环语句绘制棋盘的格子。使用嵌套的for循环绘制行和列,通过改变画笔的颜色实现黑白相间的效果。在循环中,每绘制一个格子后,画笔向右移动一个格子的宽度,直到绘制完整行。然后,画笔退回到行的起始位置,向下移动一个格子的高度,开始绘制下一行的格子。 在绘制格子的过程中,可以根据需要自定义格子的颜色和大小。可以使用条件语句来定义奇偶数行的格子颜色不同。 最后,在棋盘上绘制棋子。可以使用turtle库提供的图形函数来绘制不同的棋子,如王、后、车、象、马和兵。根据国际象棋棋盘上每个格子的坐标,将棋子放置在相应的位置。 绘制棋子的过程中,可以设置棋子的大小和颜色,也可以根据需要添加文字或图案。可以使用回调函数和事件绑定,使棋子能够动态地移动和交互。 总结起来,要使用Python绘制一个国际象棋棋盘,需要导入turtle库,设置画笔的属性,使用循环语句绘制格子,以及根据坐标在棋盘上绘制棋子。这样就可以通过Python代码实现一个简单的国际象棋表。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值