我正在处理一些波形,需要一个网格。 对于X范围为 [0,20.500]
和y-范围为 [0,1800]
我尝试了以下代码。
%pylab
def grid(imgIn,bounds, axlabels):
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker
dpi=100
size = (imgIn.size[0]/dpi,imgIn.size[1]/dpi)
print(f'size={size}')
plt.figure(figsize=size)
plt.imshow(imgIn,'gray') # ,vmin=-1,vmax=1)
plt.minorticks_on()
from matplotlib.ticker import StrMethodFormatter
plt.gca().xaxis.set_major_formatter(StrMethodFormatter('{x:,.0f}'))
plt.gca().yaxis.set_major_formatter(StrMethodFormatter('{x:,.2f}'))
import matplotlib.ticker as plticker
plt.gca().xaxis.set_minor_locator\
(matplotlib.ticker.MultipleLocator(bounds[0][1]))
plt.gca().yaxis.set_minor_locator\
(matplotlib.ticker.MultipleLocator(bounds[1][1]))
plt.grid(which="both", linewidth=0.72,color="k")
plt.tick_params(which="minor", length=0)
plt.xlabel(axlabels[0])
plt.ylabel(axlabels[1])
import io
buf = io.BytesIO()
plt.savefig(buf, format='png', dpi=dpi,bbox_inches='tight')
buf.seek(0)
plt.close()
bytes = buf.getvalue()
return bytes
from PIL import Image as PImage
import requests
from io import BytesIO
response = requests.get('https://i.pinimg.com/564x/d2/cf/81/d2cf8152167a978747d15f3ce3bd6835.jpg')
imgaa = PImage.open(BytesIO(response.content))
T = 20.5
yMax = 1800
imgBytes = grid(imgaa,[(0,T),(0,yMax)],('Elapsed Time','Frequency'))
import io
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.axis('off')
im = PImage.open(io.BytesIO(imgBytes))
ax.imshow(im,aspect='auto')
所以从积极的一面来看 -- 这确实创建了一个网格。 但缺点是
我不确定如何解决这两个问题。感谢指点!
我已经清理了很多代码,在一个更简单的基础上工作。我现在剩下的是以下代码。
from io import BytesIO
import matplotlib.pyplot as plt
from PIL import Image as PImage
import requests
response = requests.get(
'https://i.pinimg.com/564x/d2/cf/81/d2cf8152167a978747d15f3ce3bd6835.jpg')
image = PImage.open(BytesIO(response.content))
dpi = 100
size = (image.size[0] / dpi, image.size[1] / dpi)
fig, ax = plt.subplots(figsize=size)
ax.imshow(image, extent=[0, 20.5, 0, 1800], aspect='auto')
ax.grid(which='both', color='black', linewidth=2)
ax.minorticks_on()
ax.tick_params(which='minor', length=0)
ax.set_xlabel('Elapsed Time')
ax.set_ylabel('Frequency')
plt.show()
显示
是你想要的吗?