我需要呈现以下数组的对数刻度散点图:
x =[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 39, 42, 44, 48]
y = [2.43310035e-01, 1.98717530e-01, 1.49977138e-01, 1.14921506e-01,
8.24242820e-02, 5.90611187e-02, 4.29377055e-02, 3.07771028e-02,
2.14144185e-02, 1.56552790e-02, 1.08977290e-02, 8.31754741e-03,
5.73736582e-03, 3.95192371e-03, 2.91767370e-03, 2.46042633e-03,
1.77455527e-03, 1.16489211e-03, 7.94739478e-04, 7.51192109e-04,
5.22568424e-04, 2.61284212e-04, 2.39510528e-04, 1.41528948e-04,
1.74189475e-04, 1.30642106e-04, 1.41528948e-04, 1.19755264e-04,
6.53210530e-05, 3.26605265e-05, 2.17736843e-05, 2.17736843e-05,
7.62078951e-05, 2.17736843e-05, 2.17736843e-05, 0.00000000e+00,
0.00000000e+00, 2.17736843e-05, 2.17736843e-05, 0.00000000e+00,
0.00000000e+00]
我最初plot.scatter
使用以下语句进行操作:
plt.scatter(x,y)
我得到的图像是这样的:
我想在 Y 轴上使用对数刻度,但如果我使用指令plt.yscale('log')
我没有得到图表上的所有点,我只得到 4 个点。
有人可以帮助我吗?我该怎么做才能使用 Y 轴上的对数刻度向我显示所有数据?
scatter
显然,当值非常小时(GitHub 上的问题报告)时,它会自动自动缩放图表。您有几种选择:您可以使用
matplotlib.pyplot.semilogy
代替scatter
:另一种选择是使用
matplotlib.pyplot.plot
:如果您想使用
matplotlib.pyplot.scatter
,无论出于何种原因,您都可以手动指定轴限制y
:在所有情况下,我们都会得到: