gpt4 book ai didi

python - 如何在现有图像上绘制对数轴?

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:00 34 4
gpt4 key购买 nike

我有一个图像,它是带有对数轴的引用图。我想将数据分散在其上,但我不知道该怎么做。这是 matlab 中的一个工作示例:

close all
figure
img = imread('psi_vratio.png');
imagesc([0.103 0.99],[0.512 0.8],flipud(img));
set(gca,'ydir','normal');
ax = gca;
ax.YTick = [0.5,0.6,0.7,0.8];
ax.XTick = [0.1,0.2,0.3,0.4,0.6,0.8,1.0];
set(ax,'XScale','log');
hold on
scatter(0.3,0.7);
ylabel('v_{ratio}');
xlabel('\phi');
print('logplot_outMatlab.png','-dpng');

enter image description here以及我在 python 中的尝试

 import matplotlib.pyplot as plt

fig = plt.figure()
im = plt.imread('psi_vratio.png')
plt.imshow(im, extent=[0.103, 0.99, 0.512, .8], aspect='auto')
plt.plot(0.3,0.7, 'rx')
plt.ylabel('$\phi$')
plt.ylabel('$V_{ratio}$')
plt.tight_layout()
plt.savefig('logplot_out0.png', dpi=300)

fig = plt.figure()
im = plt.imread('psi_vratio.png')
plt.xscale('log')
plt.imshow(im, extent=[0.103, 0.99, 0.512, .8], aspect='auto')
plt.plot(0.3,0.7, 'rx')
plt.ylabel('$\phi$')
plt.ylabel('$V_{ratio}$')
plt.tight_layout()
plt.savefig('logplot_out1.png', dpi=300)

enter image description here

我怎样才能让它不被拉伸(stretch)?

最佳答案

正如评论中已经建议的,实现您想要的结果的最佳方法是使用两个单独的轴并保持原始的纵横比:

import matplotlib.ticker as ticker

fig = plt.figure(figsize=(12,8))
im = plt.imread('psi_vratio.png')

#set first axes
ax = fig.add_subplot(1,1,1)
ax.imshow(im, aspect='equal')
plt.axis('off')

#create second axes
newax = fig.add_axes(ax.get_position(), frameon=False)
newax.set_xlim((0.103, 0.99))
newax.set_ylim((0.512, .8))
newax.set_xlabel('$\phi$')
newax.set_ylabel('$V_{ratio}$')
newax.set_xscale('log')
#Change formatting of xticks
newax.xaxis.set_minor_formatter(ticker.FormatStrFormatter('%.1f'))
#plot point
newax.plot(0.3,0.7, 'rx')

这是我得到的结果:enter image description here

关于python - 如何在现有图像上绘制对数轴?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58455029/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com