[英]pandas - plotting lines and markers with different zorders?
我试图从pandas
数据框中绘制散布的线条和标记,但是在某些情况下,线条最终会绘制在标记的顶部。 有什么方法可以分别设置线条和标记的zorder
,以确保无论序列如何,标记始终绘制在任何线条的顶部? 例如,类似于marker_zorder=2, line_zorder=1
例如,以下代码:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'x': [1, 5, 10],
'y1': [24, 7, 14],
'y2': [14, 6, 35]})
fig, ax = plt.subplots(figsize=(3, 5))
df.plot.line(x='x', ls='--', marker='.', ms=15, ax=ax)
ax.set_ylim(bottom=0)
plt.savefig('test.png', bbox_inches='tight')
产生此图:
我们可以看到橙色线的地方是蓝色标记。
不,没有诸如marker_zorder
这样的东西。 但是您可以两次绘制数据,一次绘制为一条线,一次绘制在顶部。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'x': [1, 5, 10],
'y1': [24, 7, 14],
'y2': [14, 6, 35]})
fig, ax = plt.subplots(figsize=(3, 5))
df.plot.line(x='x', ls='--', ax=ax)
# Reset prop cycle to obtain the same colors for the next plot
ax._get_lines.set_prop_cycle(plt.rcParams["axes.prop_cycle"])
df.plot.line(x='x', ls='', marker='.', ms=15, ax=ax, legend=False)
ax.set_ylim(bottom=0)
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.