在绘图中水平移动点

时间:2019-05-18 08:11:57

标签: python plot

我有一个数据点图,其中许多数据点都在相同的值附近,因此我想将它们稍微移到一边,以便每个点都可见,而且它们不仅仅是一团糟。 / p>

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

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()

这是成品,但代码中有其他几点。 Example of my plot

1 个答案:

答案 0 :(得分:0)

您可以将列表转换为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()