Python生成两种不同的曲线图并导出为同一个PDF
时间: 2024-03-28 21:37:32 浏览: 19
要生成两种不同的曲线图并导出为同一个 PDF 文件,可以使用 Matplotlib 库。以下是示例代码:
```python
import matplotlib.pyplot as plt
# 生成第一张图
x1 = [1, 2, 3, 4]
y1 = [10, 20, 30, 40]
plt.plot(x1, y1)
# 生成第二张图
x2 = [4, 3, 2, 1]
y2 = [40, 30, 20, 10]
plt.plot(x2, y2)
# 设置图形标题和标签
plt.title('Two Different Curves')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
# 将两张图导出为同一个 PDF 文件
with PdfPages('two_curves.pdf') as pdf:
pdf.savefig()
```
在上面的代码中,我们首先使用 `plt.plot()` 函数生成两张不同的曲线图,并使用 `plt.title()`、`plt.xlabel()` 和 `plt.ylabel()` 函数设置图形标题和标签。
接着,我们使用 `PdfPages` 类创建一个名为 `two_curves.pdf` 的 PDF 文件,并将两张图导出到其中,最后关闭 PDF 文件。需要注意的是,在导出图形之前,需要先使用 `plt.savefig()` 或 `pdf.savefig()` 函数将图形保存到缓存中。
相关问题
python读取两份txt的所有坐标并按x坐标和y坐标分别绘制曲线图并导出为PDF
好的,根据您的需求,我提供以下代码供参考:
```python
import matplotlib.pyplot as plt
# 读取第一份txt文件的坐标
with open('file1.txt', 'r') as f1:
lines = f1.readlines()
x1 = []
y1 = []
for line in lines:
x, y = line.strip().split(',')
x1.append(float(x))
y1.append(float(y))
# 读取第二份txt文件的坐标
with open('file2.txt', 'r') as f2:
lines = f2.readlines()
x2 = []
y2 = []
for line in lines:
x, y = line.strip().split(',')
x2.append(float(x))
y2.append(float(y))
# 根据x坐标绘制曲线图
plt.plot(x1, y1, label='File 1')
plt.plot(x2, y2, label='File 2')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.savefig('x_curve.pdf')
plt.clf()
# 根据y坐标绘制曲线图
plt.plot(y1, x1, label='File 1')
plt.plot(y2, x2, label='File 2')
plt.xlabel('Y')
plt.ylabel('X')
plt.legend()
plt.savefig('y_curve.pdf')
plt.clf()
```
以上代码中,我们首先读取了两份txt文件的坐标,并将x坐标和y坐标分别存入不同的列表中。然后,我们使用Matplotlib库绘制了两张曲线图,一张是根据x坐标绘制的,另一张是根据y坐标绘制的。最后,我们使用savefig方法将绘制好的曲线图保存为PDF文件。
希望这个代码可以帮到您!
python 生成六宫格的数独题并导出到pdf
要生成六宫格的数独题并导出到pdf,可以使用Python中的`reportlab`库和`numpy`库。以下是一个简单的示例代码:
```python
import numpy as np
from reportlab.pdfgen import canvas
# 生成数独
def generate_sudoku():
base = 3
side = base*base
def pattern(r,c): return (base*(r%base)+r//base+c)%side
def shuffle(s): return np.random.permutation(s)
rBase = range(base)
rows = [ g*base + r for g in shuffle(rBase) for r in shuffle(rBase) ]
cols = [ g*base + c for g in shuffle(rBase) for c in shuffle(rBase) ]
nums = shuffle(range(1,base*base+1))
# produce board using randomized baseline pattern
board = [ [nums[pattern(r,c)] for c in cols] for r in rows ]
squares = side*side
empties = squares * 3//4
for p in np.random.permutation(squares)[:empties]:
board[p//side][p%side] = 0
return board
# 生成pdf
def generate_pdf(board):
c = canvas.Canvas("sudoku.pdf")
c.setFont("Helvetica", 12)
x, y = 50, 750
c.drawString(x, y, "Six-by-six Sudoku")
c.setFont("Helvetica", 10)
c.translate(100,700)
for i in range(len(board)):
for j in range(len(board)):
c.drawString(j*20, -i*20, str(board[i][j]))
c.translate(0,-20)
c.showPage()
c.save()
# 生成数独和pdf
board = generate_sudoku()
generate_pdf(board)
```
这个代码生成了一个六宫格的数独,将其导出到了`sudoku.pdf`文件中。你可以根据自己的需要修改字体、字号、位置等参数。
相关推荐
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)