Построение нескольких столбцов фрейма данных с цветовой картой на одном графике - PullRequest
0 голосов
/ 30 января 2020

Я хочу построить столбец с номером 0 по сравнению со всеми другими столбцами с помощью цветовой карты. Я написал в следующем для For l oop. Однако все графики отображаются отдельно, а не на одном графике. Ниже приведен код, который я написал:

csv_file1    = pd.read_csv(r'file path')
j            = [i for i in range(1,175)]
for i in j:
    csv_file1.plot.scatter(0,i,c=i,colormap='viridis')
    plt.hold() 

Как получить весь график одного и того же графика?

Ответы [ 2 ]

0 голосов
/ 30 января 2020

С pandas вам нужно нарисовать весь график, используя тот же ax. Предположим, вы хотите использовать первый столбец как x, а все остальные столбцы как y, все окрашено через значение y. Вам нужно подавить цветовую панель, так как pandas хочет добавить отдельную цветовую панель для каждого столбца.

from matplotlib import pyplot as plt
import pandas as pd

csv_file1 = pd.read_csv(r'file path')

ax = plt.gca()
columns = csv_file1.columns
for col in columns[1:]:
    csv_file1.plot.scatter(x=columns[0], y=col, c=col, colormap='viridis',
        ax=ax, colorbar=False)
plt.show()

В качестве альтернативы, если вы хотите присвоить каждому столбцу свой цвет, вы можете рассчитать список цветов. (pandas, кажется, любит их в списке одного цвета):

colors = [[plt.cm.viridis(i / len(columns))] for i in range(len(columns) - 1)]
for col, color in zip(columns[1:], colors):
    csv_file1.plot.scatter(x=columns[0], y=col, c=color, ax=ax, colorbar=False)
plt.show()
0 голосов
/ 30 января 2020

Не могу говорить за pandas .plot, но вы можете контролировать, когда холсты очищаются, используя plt.scatter и помещая plt.show() вне l oop

import pandas as pd
import matplotlib.pyplot as plt 

csv_file1    = pd.read_csv(r'file path')
j            = csv_file.columns.tolist()
for i in j:
    plt.scatter(csv_file1.index,csv_file1[i],colormap='viridis')
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...