首页 > 解决方案 > 在图中水平移动点

问题描述

我有一个数据点图,其中许多数据点的值大致相同,所以我想将它们移到一边,以便每个点都可见,而且它们都不仅仅是一团糟。

我没有在网上找到任何可以帮助我的代码。

mpimax=[250, 300, 350, 400, 450]
mpimax2=[400, 450, 500, 550]
Fpis=np.array([ 88.15000964,  87.82604812,  85.44423898,  84.85864079,  84.41117001])
Fpis2=np.array([ 87.24004281,  85.42371568,  86.74856596,  86.42293262])
Fpis3=[80.97814175481653, 74.12625811398735, 82.44657342612943, 87.3771939549136]
Fpiserr=[1.6053918983908735,
 1.1549571932661258,
 1.0139484239435315,
 0.8058605526698696,
 0.6640766134707818]
Fpiserr2=[1.4946328563696913, 1.414439912368433, 1.370372743102621, 1.2860068512665481]
Fpiserr3=[0.7099107986265524,
 0.07387064826087104,
 0.1129094733109782,
 0.1318016758128941]


plt.ylim(73,94)
plt.xlim(200,600)
plt.errorbar(mpimax,Fpis,yerr=Fpiserr,fmt="ro",label='NLO x',capsize=2)
plt.errorbar(mpimax2,Fpis2,yerr=Fpiserr2,fmt="r^",label='NNLO x',mfc='none',capsize=2)
plt.errorbar(mpimax2,Fpis3,yerr=Fpiserr3,fmt="g^",label='NNNLO x',capsize=2)
plt.xlabel('$M_{\pi}^{max}$[MeV]')
plt.legend(loc='lower left', fontsize='small')
plt.savefig('Fcutoffs.png')
plt.show()

这是成品,但除了代码中的内容外,还有其他一些要点。 我的情节示例

标签: pythonplot

解决方案


您可以将列表转换为 np 数组,然后稍微移动它们,例如:

import numpy as np
import matplotlib.pyplot as plt

mpimax = np.asarray([250, 300, 350, 400, 450])
mpimax2 = np.asarray([400, 450, 500, 550])

...

plt.errorbar(mpimax, Fpis, yerr=Fpiserr, fmt="ro", label='NLO x', capsize=2)
plt.errorbar(mpimax2 + 3,
             Fpis2,
             yerr=Fpiserr2,
             fmt="r^",
             label='NNLO x',
             mfc='none',
             capsize=2)
plt.errorbar(mpimax2 + 6,
             Fpis3,
             yerr=Fpiserr3,
             fmt="g^",
             label='NNNLO x',
             capsize=2)
plt.xlabel('$M_{\pi}^{max}$[MeV]')
plt.legend(loc='lower left', fontsize='small')
plt.savefig('Fcutoffs.png')
plt.show()

推荐阅读