从 mpl 平行坐标图中删除图例?
Removing legend from mpl parallel coordinates plot?
我有一个包含大量数据点的平行坐标图,所以我尝试使用连续的颜色条来表示它,我想我已经解决了。但是,我无法删除创建绘图时放入的默认键,它很长并且妨碍可读性。有没有办法删除此 table 以使图表更易于阅读?
这是我目前用来生成平行坐标图的代码:
parallel_coordinates(data[[' male_le','
female_le','diet','activity','obese_perc','median_income']],'median_income',colormap = 'rainbow',
alpha = 0.5)
fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)
cmap = mpl.cm.rainbow
bounds = [0.00,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N,)
plt.colorbar(mpl.cm.ScalarMappable(norm = norm, cmap=cmap),cax = ax, orientation = 'horizontal',
label = 'normalised median income', alpha = 0.5)
plt.show()
当前输出:
我希望我的图例表示为颜色条,如下所示:
如有任何帮助,我们将不胜感激。谢谢
您可以使用 ax.legend_.remove()
删除图例。
plt.colorbar
的 cax
参数表示放置颜色条的子图。如果您将其遗漏,matplotlib 将创建一个新的子图,从当前子图“窃取”space(子图在 matplotlib 中通常被 ax
引用)。因此,此处省略 cax
(不需要添加 ax=ax
,因为此处 ax
是当前子图)将创建所需的颜色条。
下面的代码使用 seaborn 的企鹅数据集来创建一个独立的示例。
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns
import numpy as np
from pandas.plotting import parallel_coordinates
penguins = sns.load_dataset('penguins')
fig, ax = plt.subplots(figsize=(10, 4))
cmap = plt.get_cmap('rainbow')
bounds = np.arange(penguins['body_mass_g'].min(), penguins['body_mass_g'].max() + 200, 200)
norm = mpl.colors.BoundaryNorm(bounds, 256)
penguins = penguins.dropna(subset=['body_mass_g'])
parallel_coordinates(penguins[['bill_length_mm', 'bill_depth_mm', 'flipper_length_mm', 'body_mass_g']],
'body_mass_g', colormap=cmap, alpha=0.5, ax=ax)
ax.legend_.remove()
plt.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),
ax=ax, orientation='horizontal', label='body mass', alpha=0.5)
plt.show()
我有一个包含大量数据点的平行坐标图,所以我尝试使用连续的颜色条来表示它,我想我已经解决了。但是,我无法删除创建绘图时放入的默认键,它很长并且妨碍可读性。有没有办法删除此 table 以使图表更易于阅读?
这是我目前用来生成平行坐标图的代码:
parallel_coordinates(data[[' male_le','
female_le','diet','activity','obese_perc','median_income']],'median_income',colormap = 'rainbow',
alpha = 0.5)
fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)
cmap = mpl.cm.rainbow
bounds = [0.00,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N,)
plt.colorbar(mpl.cm.ScalarMappable(norm = norm, cmap=cmap),cax = ax, orientation = 'horizontal',
label = 'normalised median income', alpha = 0.5)
plt.show()
当前输出:
我希望我的图例表示为颜色条,如下所示:
如有任何帮助,我们将不胜感激。谢谢
您可以使用 ax.legend_.remove()
删除图例。
plt.colorbar
的 cax
参数表示放置颜色条的子图。如果您将其遗漏,matplotlib 将创建一个新的子图,从当前子图“窃取”space(子图在 matplotlib 中通常被 ax
引用)。因此,此处省略 cax
(不需要添加 ax=ax
,因为此处 ax
是当前子图)将创建所需的颜色条。
下面的代码使用 seaborn 的企鹅数据集来创建一个独立的示例。
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns
import numpy as np
from pandas.plotting import parallel_coordinates
penguins = sns.load_dataset('penguins')
fig, ax = plt.subplots(figsize=(10, 4))
cmap = plt.get_cmap('rainbow')
bounds = np.arange(penguins['body_mass_g'].min(), penguins['body_mass_g'].max() + 200, 200)
norm = mpl.colors.BoundaryNorm(bounds, 256)
penguins = penguins.dropna(subset=['body_mass_g'])
parallel_coordinates(penguins[['bill_length_mm', 'bill_depth_mm', 'flipper_length_mm', 'body_mass_g']],
'body_mass_g', colormap=cmap, alpha=0.5, ax=ax)
ax.legend_.remove()
plt.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),
ax=ax, orientation='horizontal', label='body mass', alpha=0.5)
plt.show()