我有一组可以分组的不同时间序列。例如。下图显示了 A、B、C 和 D 系列。但是,A 和 B 属于 G1 组,C 和 D 属于 G2 组。
我想通过在左侧添加另一个轴来反映这一点,该轴穿过涡轮机组并相应地标记这些轴。
到目前为止我已经尝试了一些事情,但显然这并不那么容易。
有人知道我该怎么做吗?
PS:因为我用的是panda的plot(subplots=True)
在已经有列的数据框中
| G1 | G2 |
|-------|------|
index | A B | C D |
------|-------|------|
也许 pandas 已经可以为我做到这一点了。这就是为什么我使用pandas tag.
您可以在图中创建额外的轴,这些轴跨越每两个图,但只有一个左 y 轴,没有刻度线和其他装饰。仅设置了 ylabel。这将使整个事情看起来很协调。
好处是您可以使用现有的 pandas 绘图。缺点是代码超过 15 行。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
df = pd.DataFrame(np.random.rand(26,4), columns=list("ABCD"))
axes = df.plot(subplots=True)
fig = axes[0].figure
gs = gridspec.GridSpec(4,2)
gs.update(left=0.1, right=0.48, wspace=0.05)
fig.subplots_adjust(left=.2)
for i, ax in enumerate(axes):
ax.set_subplotspec(gs[i,1])
aux1 = fig.add_subplot(gs[:2,0])
aux2 = fig.add_subplot(gs[2:,0])
aux1.set_ylabel("G1")
aux2.set_ylabel("G2")
for ax in [aux1, aux2]:
ax.tick_params(size=0)
ax.set_xticklabels([])
ax.set_yticklabels([])
ax.set_facecolor("none")
for pos in ["right", "top", "bottom"]:
ax.spines[pos].set_visible(False)
ax.spines["left"].set_linewidth(3)
ax.spines["left"].set_color("crimson")
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)