【发布时间】:2017-07-25 14:21:12
【问题描述】:
我正在使用 Python 在同一个图上绘制几条直线。
我的值幅度比 x 值有很大的可变性(在我的代码中用变量 q 调用),所以我想把它们放在 x 轴上的相同距离,以便在第一部分有一个清晰的视野图的。
这是我的代码:
def c(m,x):
'''
Linear cost function, describing costs for each weight range
:param m: the slope, modelling rates
:param x: the abscissa, modelling quantity ordered
:return: the cost value for each quantity
'''
return m * x
for i in range(0,9):
w = np.arange(0., q[9], 0.01)
plt.plot(w,c(r[i],w),'b--',linewidth=0.3)
plt.plot( [q[i],breakpoints[i]] , [c(r[i], q[i]), c(r[i], breakpoints[i])], 'r')
plt.plot(q[i + 1], c(r[i], breakpoints[i]), 'r.')
plt.show()
为了简单起见,这里有我的代码sn-p涉及的所有数据:
如您所见,这是经典的数量折扣研究。 所以,如果我只是简单地绘制这些值,我无法区分第一条直线上发生了什么,因为为前 q 值保留的空间很小,见下文:
现在我向您展示前 q 值的缩放图:
我想到的解决方案是将所有q[] 值绘制在相同的距离上:见下图。
所以我想要实现的只是让所有 q[] 值在 x 轴上的距离相同,独立于它们的值。我该怎么做?
【问题讨论】:
-
谢谢。我已经编辑了我的问题。
-
使用像您展示的那样的轴是可能的,但是直线将不再是直线(它们将是弯曲的和/或有扭结)。也许您首先想检查对数缩放是否朝着您想要的方向发展 (
plt.gca().set_xscale("log", nonposx='clip'))。 -
如果我没记错的话,它们应该保持直线,因为将执行单轴上的线性变换。我只是希望 x 轴上的每个间隔都具有相同的长度(例如,间隔 [0,0.1] 为 2 厘米,间隔 [100,250] 为 2 厘米)。顺便说一句,谢谢你的帮助
-
如果区间 0 到 0.1 所占用的空间与例如10 到 20。
-
为什么不呢?您只是按一个常数因子进行缩放
标签: python matplotlib plot