在同一张图上用彩色图绘制多列数据框

Plotting multiple columns of data frame with color map on the same graph

我想用彩色地图绘制第 0 列与所有其他列的对比图。 我在后面写了 For 循环。但是,所有图表都是单独出现的,而不是在同一张图表上。下面是我写的代码,

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

如何获取同一张图的所有图?

不能代表 pandas.plot,但您可以通过使用 plt.scatter 并将 plt.show() 置于循环外

来控制何时清除画布
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()

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