【问题标题】:Matplotlib Add a background image without corrupting the data [duplicate]Matplotlib 添加背景图像而不破坏数据[重复]
【发布时间】:2021-10-16 01:44:09
【问题描述】:

我用 matplotlib 创建了一个带有数据的图表,我想添加一个背景图像,但数据会根据图像数据而变化。我想要这个在背景上有一个图像,像这样: What I want

所以图形和这段代码创建的图形:

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)

这给了我这个: Wrong graphic

【问题讨论】:

  • 类似ax.imshow(img, extent=[110, 40, 110, 400], aspect='auto'),但您需要不同的范围值

标签: python matplotlib


【解决方案1】:

具有正确范围值的示例:

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)

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 2021-07-29
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 2020-12-01
    • 2019-07-29
    • 1970-01-01
    • 2012-04-09
    相关资源
    最近更新 更多