【发布时间】:2021-09-07 21:25:13
【问题描述】:
我有很多 x 值大约为零的数据,而当你上升到大约 950 时,只有少数 x 值,
我想创建一个带有非线性 x 轴的图,以便可以以“直线”形式看到关系。如本例所示,
我尝试过使用plt.xscale('log'),但它没有达到我想要的效果。
我无法将对数刻度函数与散点图一起使用,因为它只显示 3 个值而不是存在的数千个值。
我尝试过使用
plt.plot(retper, aep_NW[y], marker='o', linewidth=0)
复制散点函数,该函数绘制但不显示我想要的。
plt.figure(1)
plt.scatter(rp,aep,label="SSI sum")
plt.show()
图 3:
plt.figure(3)
plt.scatter(rp, aep)
plt.xscale('log')
plt.show()
图 4:
plt.figure(4)
plt.plot(rp, aep, marker='o', linewidth=0)
plt.xscale('log')
plt.show()
补充: 您好,感谢您的回复。 我认为我的 x 轴被截断是对的,但我不确定为什么或如何...... 我不太确定要明智地发布代码,因为数据都很大并且来自服务器,所以不能真正给你数据来查看它。
基本上,aep_NW 是一个一维数组,有 951 个元素,值从 0 到 140,大多数值很小,只有少数值较大。该数据代表了 951 年的风暴严重程度指数。
然后我希望 x 轴成为这些值的返回周期,所以基本上我制作了一个大小相同的 rp 数组,它的值从 951 向下每次减少一半。
然后我将 aep_NW 值从最低到最高排序,最高值与最大回报值 (951) 相关联,然后是第二大 aep_NW 值与第二大回报期值 (475.5) 等相关联。
所以当我绘制它时,我需要 x 轴比例类似于您在上面显示的示例或我最初附加的第一张图像。
rp = [0]*numseas.shape[0]
i = numseas.shape[0] - 1
rp[i] = numseas.shape[0]
i = i - 1
while i != 0:
rp[i] = rp[i+1]/2
i = i - 1
y = np.argsort(aep_NW)
fig, ax = plt.subplots()
ax.scatter(rp,aep_NW[y],label="SSI sum")
ax.set_xscale('log')
ax.set_xlabel("Return period")
ax.set_ylabel("SSI score")
plt.title("AEP for NW Europe: total loss per entire extended winter season")
plt.show()
【问题讨论】:
标签: python matplotlib plot scatter