簡體   English   中英

用熊貓在線/條形圖上繪制多個系列

[英]Plotting multiple series on a line/bar graph with pandas

我正在嘗試在同一張圖上繪制一條線和一條線。 我已經接近了,但是我不能解決一些問題。 到目前為止,這就是我所擁有的...

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.DataFrame({'Value1': np.arange(80, 180, 1),
                     'Value2': np.arange(1.5, .5, -0.01)},
                    index=np.arange(10, 110, 1))

fig, ax = plt.subplots(figsize=(10, 10))

data['Value1'].plot(ax=ax)
ax2 = ax.twinx()
data['Value2'].plot(kind='bar', ax=ax2, color='y', ylim=(0, 3))

示例圖

所以這張圖我遇到的問題是...

  1. X勾號看起來很糟糕。 如果我只做線圖,則x刻度看起來很好。 但是,一旦添加twinx軸,主/次刻度線邏輯就會被刪除。 我該如何保留?
  2. 我的X軸是數字。 請注意,該線在值“ 10”處與x軸相交(很難看到,但這就是發生了的事情)。 我認為這是因為該行的x軸應該以“ 10”開始,而該條的x軸也應從10開始,但是值和標簽存在混淆,因此該行的x軸被推到標簽“ 20“。

最好的方法是什么?

條形圖和線形圖具有不同的X坐標范圍,請考慮使用兩個x坐標。

您可以嘗試在data['Value1'].plot(ax=ax)之后保存xticksxtickslabels ,並在data['Value2'].plot(kind='bar', ax=ax2, color='y', ylim=(0, 3))

data['Value1'].plot(ax=ax)
xticks = ax.get_xticks()
xlabels = [x.get_text() for x in ax.get_xticklabels()]


ax2 = ax.twinx()
data['Value2'].plot(kind='bar', ax=ax2, color='y', ylim=(0, 3))

ax.set_xticks(xticks)
ax.set_xticklabels(xlabels)

plt.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM