喜欢显示两个数据列的图表。它的问题是图例仅显示姓氏l/s。
l/s
import pandas as pd import matplotlib.pyplot as plt Tab = pd.read_csv('Mst01.csv', delimiter=';') x = Tab['Nr. '] y1 = Tab['cm'] y2 = Tab['l/s'] fig, ax1 = plt.subplots() ax2 = ax1.twinx() ax1.plot(x, y1, 'g-', label='cm') ax2.plot(x, y2, 'b-', label='l/s') ax1.set_xlabel('Nr.') ax1.set_ylabel('cm', color='g') ax2.set_ylabel('l/s', color='b') plt.title('Mst01') plt.legend() plt.show()
如果我做 ax1.legend() ax2.legend()
两个图例都将显示,但一个在另一个之上。
顺便问一下,有没有更简单的方法来获取每行代码的空格?
所以你有两种选择,要么把图加在一起,要么使用fig.legend()
fig.legend()
下面是一些示例代码,可以解决这个问题
import pandas as pd import matplotlib.pyplot as plt import numpy as np # Create Example Dataframe dummy_data = np.random.random_sample((100,2)) df = pd.DataFrame(dummy_data, columns=['Col_1', 'Col_2']) df.Col_2 = df.Col_2*100 # Create Figure fig, ax = plt.subplots() col_1 = ax.plot(df.Col_1, label='Col_1', color='green') ax_2 = ax.twinx() col_2 = ax_2.plot(df.Col_2, label='Col_2', color='r') # first solution lns = col_1+col_2 labs = [l.get_label() for l in lns] ax.legend(lns, labs, loc='upper right') # secound solution fig.legend() fig