har*_*jay 4 python plot matplotlib pandas
我想让大熊猫覆盖条形图和线条图.这两个系列有不同的比例,所以我希望将值绘制在两个"y"轴上.我不能让熊猫一起显示"酒吧"和"线"图.
from pandas import DataFrame
df_eg = DataFrame()
df_eg=DataFrame(data=[(1212,231),(9283,624),(11734,943),(12452,1037),(16766,1037),(120,113)],index=[2014,2015,2016,2017,2018,2019],columns=["Release","Hold"])
Run Code Online (Sandbox Code Playgroud)
这给出了DataFrame
Release Hold
2014 1212 231
2015 9283 624
2016 11734 943
2017 12452 1037
2018 16766 1037
2019 120 113
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试将"释放"绘制为条形图并将"保持"列绘制为具有双轴的线,则仅获得该线.
fig, ax = plt.subplots()
ax2 = ax.twinx()
plt.hold(False)
df_eg["Release"].plot(ax=ax,kind="bar")
df_eg["Hold"].plot(ax=ax2, style='r-', secondary_y=True)
ax.legend(loc='best')
Run Code Online (Sandbox Code Playgroud)
但是,如果我将两者都绘制为线条.两个值都显示出来.我想知道如何使条形图和线条出现在同一个图上.我正在使用pandas版本'0.16.2'和matplotlib版本'1.3.1'.
fig, ax = plt.subplots()
ax2 = ax.twinx()
plt.hold(False)
df_eg["Release"].plot(ax=ax,kind="line")
df_eg["Hold"].plot(ax=ax2, style='r-', secondary_y=True)
ax.legend(loc='best')
Run Code Online (Sandbox Code Playgroud)
Kar*_*tik 13
这会解决您的问题吗?
fig, ax = plt.subplots()
ax2 = ax.twinx()
ax.bar(df_eg.index, df_eg["Release"], color=(190/255,190/255,190/255,0.7), label='Release')
ax2.plot(df_eg.index, df_eg["Hold"], color='green', label='Hold')
ax.set_xticklabels(df_eg.index)
ax.legend(loc='best')
Run Code Online (Sandbox Code Playgroud)
这完全可以用pandas来完成,包括标签和图例:
import pandas as pd # v 1.1.3
df = pd.DataFrame(data=[(1212,231), (9283,624), (11734,943), (12452,1037), (16766,1037), (120,113)],
index=[2014, 2015, 2016, 2017, 2018, 2019], columns=['Release', 'Hold'])
ax = df.plot.bar(y='Release', ylabel='Release', figsize=(8, 5))
df.plot(y='Hold', c='k', ax=ax, use_index=False, secondary_y=True, mark_right=False)
ax.right_ax.set_ylabel('Hold');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2632 次 |
| 最近记录: |