python - python如何在指定的图像上绘图?
问题描述
我想在函数中编写我通常在绘图时使用的操作和参数。以后只要传入x和y就可以按照默认参数进行绘制了。但现在我面临的问题是,我如何确定画plt.plot
的是哪张照片?例如,我想在一张图片上画两条曲线。
def draw(x,y):
... %some operations
plt.plot(x,y) % draw picture operations
... %some operations
draw(x,y),
dray(x2,y2)
如何保证这两条曲线画在一张图片上。也就是说,我需要传递哪些参数才能将plt.plot
焦点放在我指定的图片上。
def plotLine(coordinate,figName='test',xylabel=[],ax=None):
# assert(len(coordinate)<=2)
if (len(coordinate)==2) :
x=coordinate[0]
y=coordinate[1]
assert(len(x)==len(y))
else:
y=coordinate
x =np.linspace(0,len(y)-1,len(y))
minn=min(y)
maxx=max(y)
plt.switch_backend('Agg')
if ax == None:
fig,ax = plt.subplots()
fig = plt.figure(num=None, figsize=(3.5, 1.5), dpi=300, facecolor='w')
plt.subplots_adjust(right = 0.98, top = 0.98, bottom=0.35,left=0.32,wspace=0, hspace=0.2)
ax.set_xlim([0,len(x)])
ax.set_ylim([0,maxx+maxx/3])
plt.xticks(fontsize=5)
plt.yticks(fontsize=5)
bar_width = 0.35
opacity = 0.8
lsmarkersize = 2.5
lslinewidth = 0.6
ax.plot(x,y,'-', linewidth=1, markersize=lsmarkersize, markeredgewidth=0)
plt.savefig(figName+".png",bbox_inches='tight',dpi=500)
# os.system("code "+figName+".png")
if ax!=None:
return ax
else:
return plt.gca()
x=[1,2,3,4,5,6]
y=[1,2,3,4,4,5]
ax = plotLine([x,y])
x=[1,2,3,4,5,6]
y=[12,13,14,15,16,17]
plotLine([x,y],ax=ax)
我试图将 ax 作为参数传递。但是最后绘制的图片是空白的。
解决方案
您可以使用subplots
指定要绘制的轴。例如,创建一个带有单个子图的图形:
fig, ax = plt.subplots()
ax.plot(x, y)
对于您的功能,您可以执行以下操作
fig, ax = plt.subplots()
def draw(x, y, ax):
ax.plot(x, y)
def dray(x2, y2, ax):
ax.plot(x2, y2)
推荐阅读
- java - 如何在控制器操作中实例化 CommandLineRunner 以及所有 @Autowired 属性?
- javascript - 如何删除特定用户的最后 N 条消息
- ansible - 为什么变量中有额外的空白{}?
- actions-on-google - 谷歌操作:谷歌帐户登录仅限于白名单
- time - 如何将时间转换为数字?
- powershell - 有没有办法优化这个脚本,使它更有效地运行?
- python - 使用添加函数的python列表连接
- javascript - 当列表包含“按钮”元素时,我怎样才能只找到列表的值,但按钮
- sql - 如何查看用户第一次订阅产品的时间?
- pandas - 如何从日期时间序列中构建带有月份的列?