首页 > 解决方案 > 图例中仅显示一个数据名

问题描述

我喜欢显示两个数据列的图表。问题是图例只显示姓氏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()

两个图例都将显示,但一个在另一个之上。

顺便说一句,有没有更简单的方法来获取每一行代码的空格?

标签: pythonpandasmatplotlib

解决方案


晚上好!

所以你有两种可能性,要么将图加在一起,要么使用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

从这个问题可以得出解决方案。

你说的空格是什么意思?你的意思是例如for循环的缩进?


推荐阅读