我正在尝试创建一个测井曲线图,并在其中放置了xlim
条件。假设如果我的值超过xlim
,则不会在绘图中显示,但是我想要的是包装,并且如果值大于xlim
max,则应包装该值。也就是说,它应显示在相同的y位置,但不能出现在xlim
分钟内。
。
我的代码:
_, ax = plt.subplots(1,1, figsize = (5,20))
ax2 = ax.twiny()
ax.plot(df.GR, df.DEPT, 'red')
ax2.plot(df.SP, df.DEPT, 'blue')
ax.set_xlim(0, 150)
ax2.set_xlim(50, 90)
ax.set_xlabel('GR')
ax2.set_xlabel('SP')
ax.grid()
ax.set_xticks([0,15,30,45,60,75,90,105,120,135,150])
_.legend(['GR', 'SP'], bbox_to_anchor=(0.85,0.78), fontsize = 15)
所需图
。
查看3900 m至3925 m之间的最后一个厚网格,您会看到,当该值超过
xlim
max时,它将环绕并来自图的左侧,即xlim
最小侧。另外,我想复制显示样式的图例。
最佳答案
对于“包装”,您必须添加另一个轴并分别控制其限制。对于图例,没有优雅的解决方案,但是您可以手动调整x轴标签的所有方面。例如:
import numpy as np
import matplotlib.pyplot as plt
# Make some fake data.
y = np.linspace(0, 1000)
x1 = np.sin(y / 100) + 1.1 + 0.5 * np.random.random(50)
# Make the plot.
fig, ax = plt.subplots(figsize=(3, 10))
ax_wrap = ax.twiny()
ax_wrap.axis('off')
# Plot x1 in blue.
ax.plot(x1, y)
ax.set_xlim(0, 1.5)
ax_wrap.plot(x1, y, '--') # <-- This is the wrapped data.
ax_wrap.set_xlim(1.5, 3.0) # <-- Wrapped data's limits.
# Adjust the x-axis position and colour.
ax.set_xticks((0, 1.5))
ax.spines['top'].set_position(('outward', 10))
ax.spines['top'].set_color('C0')
ax.xaxis.set_ticks_position('top')
ax.xaxis.set_label_position('top')
ax.xaxis.set_label_coords(0.5, 1.03)
ax.set_xlabel('GR', color='C0', size=20)
ax.tick_params(axis='x', colors='C0', size=0)
结果是:
绘制日志有点让人头疼。您可能想看一下以下库,这可能对您的某些工作有所帮助:
petropy
—我还没有用过,但是GitHub页面上的图看起来很漂亮。welly
—无法解决此特定问题,但我为此做了an issue。关于python - 如果值超过matplotlib中的xlim,如何环绕图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58266068/