使用Python的matplotlib

时间:2017-07-27 05:47:51

标签: python matplotlib plot loglog

我正在尝试使用以下代码在我的对数日志图中放置一条水平虚线。 K2H_HUBp [:,1] DivR 是两个[1x6000]数组。变量 1 是一个[1x6000]数组,其中包含1个。

该图的重点是显示“土豆”的半径与“甘薯”的比较。因此,如果它们相同,则所有数据点都应落在y = 1行上。

plt.scatter(K2H_HUBp[:,1],DivR,s=2.5,alpha=0.15,c = '#A9A9A9')
plt.loglog(K2H_HUBp[:,1], ones, '--',dashes=(1, 1),linewidth=0.9,c='#3C323C')
plt.ylim((0.1,10))
plt.xlim((0.35,12))
ax = plt.gca()
ax.tick_params(which = 'both', direction = 'in',right='on',top='on')
ax.set_xscale('log')
ax.set_yscale('log')
plt.ylabel("Radius (Potatos/Sweet Potatos)")
plt.xlabel("Radius (Potatos)")

我希望 行在图中同样破灭。我有这个问题graph here,这些线的间距不均匀。

我正在寻找与this非常相似的图表(是的,这是一个线性图,我正在使用对数日志图)

我尝试过没有运气修改破折号()参数。

提前感谢您的指导。 :)

2 个答案:

答案 0 :(得分:0)

您可以使用其他loglog - 绘图或使用标准plot绘制它。这段代码是否为您提供了之后的内容?

import numpy as np
import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(2, 1)

x = np.linspace(0.01, 10, 100)
y = x**5

ax1.loglog(x, y, '.')
ax1.plot([x[0], x[-1]], [y[0], y[-1]], '--', label='with plot')
ax1.legend()

ax2.loglog(x, y, '.')
ax2.loglog([x[0], x[-1]], [y[0], y[-1]], '--', label='with loglog')
ax2.legend()

fig.show()
# plt.show()

enter image description here

答案 1 :(得分:0)

事实证明,Pyplot有一个叫做hlines的漂亮功能。此函数仅使用以下参数绘制水平线:

matplotlib.pyplot.hlines(y, xmin, xmax, colors='k', linestyles='solid', label='', hold=None, data=None, **kwargs)

就我而言,我现在完全删除了代码:

plt.loglog(K2H_HUBp[:,1], ones, '--',dashes=(1, 1),linewidth=0.9,c='#3C323C')

并将其替换为:

plt.hlines(1, 0.001, 20, linestyles='dashed',linewidth=0.9,colors='#3C323C')

绘制从x 0.001到x 20的y = 1行。然后,我得到的结果为this graph

感谢您的所有指导,我希望将来可以帮助其他人!