python - Matplotlib 添加背景图像而不损坏数据
问题描述
我用 matplotlib 创建了一个带有数据的图表,我想添加一个背景图像,但数据会根据图像数据而变化。我想要这个在背景上有一个图像,像这样: 我想要什么
因此,此代码创建的图形和图形:
import datetime
import random
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
x = [datetime.datetime(2020, 7, 17, 0, 0) + datetime.timedelta(hours=i) for i in range(24)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
ax = plt.subplot()
ax.plot(x,y, lw=4)
myFmt = mdates.DateFormatter('%H:%M')
plt.gca().xaxis.set_major_formatter(myFmt)
plt.gca().set_axisbelow(True)
plt.gca().grid(color='gray', linestyle='dashed')
plt.savefig("chart.png", transparent=True, dpi=80)
但是当我尝试使用此代码添加图像时:
import datetime
import random
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
x = [datetime.datetime(2020, 7, 17, 0, 0) + datetime.timedelta(hours=i) for i in range(24)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
ax = plt.subplot()
imageFile = cbook.get_sample_data('/root/image.png')
image = plt.imread(imageFile)
ax.imshow(image)
ax.plot(x,y, lw=4)
myFmt = mdates.DateFormatter('%H:%M')
plt.gca().xaxis.set_major_formatter(myFmt)
plt.gca().set_axisbelow(True)
plt.gca().grid(color='gray', linestyle='dashed')
plt.savefig("chart.png", transparent=True, dpi=80)
这给了我这个: 错误的图形
解决方案
具有正确范围值的样本:
import datetime
import random
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
ax = plt.subplot()
x = [datetime.datetime(2020, 7, 17, 0, 0) + datetime.timedelta(hours=i) for i in range(24)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
ax.plot(x, y, lw=4)
img = plt.imread('img.png')
x0,x1 = ax.get_xlim()
y0,y1 = ax.get_ylim()
ax.imshow(img, extent=[x0, x1, y0, y1], aspect='auto')
myFmt = mdates.DateFormatter('%H:%M')
plt.gca().xaxis.set_major_formatter(myFmt)
plt.gca().set_axisbelow(True)
plt.gca().grid(color='gray', linestyle='dashed')
plt.savefig("chart.png", transparent=True, dpi=80)
推荐阅读
- python - 加快新特征的计算(关于时间和对象的行的循环)
- google-sheets-api - 未应用第二次更改 userEnteredFormat
- python-3.x - 如何使用 pandas 修改数据列值?
- python - YA 层 model_20 需要 2 个输入,但它接收到 3 个输入张量
- python - 逻辑回归模型的损失不会通过梯度下降而减少
- laravel - 要查看的 Laravel 数组
- c# - C# ASP .NET Web API 依赖注入将当前控制器的属性传递给服务类构造函数
- python - 在 VGG16 模型和 Tensorflow lite 中使用 converter.optimization 时预测时间长
- cloudflare - Cloudflare 防火墙规则未按预期工作
- html - 变换动画不适用于 bootstrap 4