我正在尝试生成混合图表area
和line
图表。考虑我的数据框df
df = pd.DataFrame([range(1, 4)] * 5, columns=list('ABC')).assign(B=lambda d: -d.B).cumsum()
还有我的图表
df.C.plot.area(stacked=False)
df.A.plot()
df.B.plot()
请注意,否定系列没有出现。
现在假设我将系列C
的一个条目设为负值
df.loc[3, 'C'] = -1
并再次情节
df.C.plot.area(stacked=False)
df.A.plot()
df.B.plot()
这是我所期望的。但是,我确实有C
所有系列的数据,这都是一个符号。我如何绘制它,以使其他系列的比例尺不被破坏?
# messed up
import pandas as pd
df = pd.DataFrame([range(1, 4)] * 5, columns=list('ABC')).assign(B=lambda d: -d.B).cumsum()
df.C.plot.area(stacked=False)
df.A.plot()
df.B.plot()
# correct but I have to put false data
import pandas as pd
df = pd.DataFrame([range(1, 4)] * 5, columns=list('ABC')).assign(B=lambda d: -d.B).cumsum()
df.loc[3, 'C'] = -1
df.C.plot.area(stacked=False)
df.A.plot()
df.B.plot()
我不知道,为什么会发生这个错误。*但是您可以强制执行自动缩放。如果只想自动缩放一个轴,则可以指定它:
#not messed up anymore
import pandas as pd
df = pd.DataFrame([range(1, 4)] * 5, columns=list('ABC')).assign(B=lambda d: -d.B).cumsum()
df.C.plot.area(stacked=False)
df.A.plot()
df.B.plot()
plt.autoscale(True, axis = "y")
plt.show()
*正如@ImportanceOfBeingErnest在评论中指出的那样,这不是错误,而是面积图的理想行为,很不幸,它与此处的线图冲突。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句