分类轴标签而不是箱形图的数字?
Categorical axis labels instead of numbers for box plot?
我想生成一个带有 cmap 颜色填充框的水平箱线图,我发现了这个:
我修改了代码,以便在索引处包含类别,如下所示:
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import pandas as pd
import numpy as np
# Random test data
test_data_df = pd.DataFrame([np.random.normal(mean, 1, 10) for mean in range(10)])
index = ["a","b","c","d","e","f","g","h","i","j"]
test_data_df.index = index
fig, axes = plt.subplots(figsize=(5, 5))
# Horizontal box plot
bplot = axes.boxplot(test_data_df,
vert=False, # vertical box aligmnent
patch_artist=True) # fill with color
# Fill with colors
cmap = cm.ScalarMappable(cmap='nipy_spectral')
test_mean = [np.mean(x) for x in test_data]
for patch, color in zip(bplot['boxes'], cmap.to_rgba(test_mean)):
patch.set_facecolor(color)
plt.show()
如何修改代码以使用索引 ["a","b","c","d","e","f","g","h","i","j"]
作为 y 轴标签?
谢谢!
如评论所述,您可以 set_yticklabels
到您的 index
列表:
axes.set_yticklabels(index)
我想生成一个带有 cmap 颜色填充框的水平箱线图,我发现了这个:
我修改了代码,以便在索引处包含类别,如下所示:
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import pandas as pd
import numpy as np
# Random test data
test_data_df = pd.DataFrame([np.random.normal(mean, 1, 10) for mean in range(10)])
index = ["a","b","c","d","e","f","g","h","i","j"]
test_data_df.index = index
fig, axes = plt.subplots(figsize=(5, 5))
# Horizontal box plot
bplot = axes.boxplot(test_data_df,
vert=False, # vertical box aligmnent
patch_artist=True) # fill with color
# Fill with colors
cmap = cm.ScalarMappable(cmap='nipy_spectral')
test_mean = [np.mean(x) for x in test_data]
for patch, color in zip(bplot['boxes'], cmap.to_rgba(test_mean)):
patch.set_facecolor(color)
plt.show()
如何修改代码以使用索引 ["a","b","c","d","e","f","g","h","i","j"]
作为 y 轴标签?
谢谢!
如评论所述,您可以 set_yticklabels
到您的 index
列表:
axes.set_yticklabels(index)