我试图在对数刻度上绘制以下数字作为matplotlib中的散点图。 x轴和y轴上的数量都有非常不同的比例,其中一个变量具有巨大的动态范围(粗略地接近0到1200万),而另一个变量在接近0到2之间。我认为绘制可能是好的两者都是对数尺度。
我尝试了以下两个变量值的子集:
fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(1, 1, 1)
ax.set_yscale('log')
ax.set_xscale('log')
plt.scatter([1.341, 0.1034, 0.6076, 1.4278, 0.0374],
[0.37, 0.12, 0.22, 0.4, 0.08])
x轴显示日志缩放但不显示点 - 仅显示两个点。知道如何解决这个问题吗?另外,如何使这个对数刻度出现在方轴上,以便可以从散点图中解释两个变量之间的相关性?
感谢。
答案 0 :(得分:3)
我不知道为什么你只得到这两点。对于这种情况,您可以手动调整限制以确保所有点都适合。我跑了:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(8, 8)) # You were missing the =
ax = fig.add_subplot(1, 1, 1)
ax.set_yscale('log')
ax.set_xscale('log')
plt.scatter([1.341, 0.1034, 0.6076, 1.4278, 0.0374],
[0.37, 0.12, 0.22, 0.4, 0.08])
plt.xlim(0.01, 10) # Fix the x limits to fit all the points
plt.show()
我不确定我理解“另外,如何使这个对数刻度显示在方轴上,以便可以从散点图解释两个变量之间的相关性?”意思是也许其他人会理解,或者你可以澄清一下?
答案 1 :(得分:2)
您也可以这样做,
plt.loglog([1.341, 0.1034, 0.6076, 1.4278, 0.0374],
[0.37, 0.12, 0.22, 0.4, 0.08], 'o')
虽然它没有真正散点图的所有灵活性,但是这会产生你想要的正确缩放轴的图。