В легенде показано только одно имя - PullRequest
0 голосов
/ 23 января 2019

Мне нравится отображать диаграмму из двух столбцов данных. Проблема в том, что легенда показывает только фамилию l/s.

Вот моя диаграмма:

Diagram

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 ()

Обе легенды будут отображаться, но одна над другой.

Кстати, есть ли более простой способ получить пробелы для каждой строки кода?

1 Ответ

0 голосов
/ 23 января 2019

Добрый вечер!

, поэтому у вас есть две возможности: либо сложить графики вместе, либо использовать 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...