当前位置: 首页 > 面试题库 >

在条形图中使用色相时,让Seaborn显示色标而不是图例?

潘宪
2023-03-14
问题内容

假设我要绘制一个条形图,其中条形的色调代表一些连续的数量。例如

import seaborn as sns
titanic = sns.load_dataset("titanic")
g = titanic.groupby('pclass')
survival_rates = g['survived'].mean()
n = g.size()
ax = sns.barplot(x=n.index, y=n,
           hue=survival_rates, palette='Reds',
            dodge=False,
          )
ax.set_ylabel('n passengers')

sns绘制的条形图

这里的传说有点愚蠢,我绘制的柱数越多,情况就越糟。最有意义的是颜色条(例如在调用时使用的颜色条sns.heatmap)。有没有办法让seaborn做到这一点?


问题答案:

另一个答案是有点hacky。因此,更严格的解决方案(不生成随后删除的图)将涉及手动创建ScalarMappable作为色条的输入。

import matplotlib.pyplot as plt
import seaborn as sns
titanic = sns.load_dataset("titanic")
g = titanic.groupby('pclass')
survival_rates = g['survived'].mean()
n = g.size()

norm = plt.Normalize(survival_rates.min(), survival_rates.max())
sm = plt.cm.ScalarMappable(cmap="Reds", norm=norm)
sm.set_array([])

ax = sns.barplot(x=n.index, y=n, hue=survival_rates, palette='Reds', 
                 dodge=False)

ax.set_ylabel('n passengers')
ax.get_legend().remove()
ax.figure.colorbar(sm)

plt.show()


 类似资料:
  • 以下代码为与分组变量关联的每个“色调”值生成一个带有不同颜色条的条形图: 我想更改颜色,以便属于相同分组值的所有条都具有相同的颜色。也就是说,的前两个栏应该是橙色,而的最后两个栏应该是蓝色。 我已经尝试了'sns.barplot()的参数。但是,除非我遗漏了什么,否则这允许我指定每个色调级别的颜色,但不能单独指定分组变量的值。 我也看了一下这个相关问题的答案,它问了一些关于。公认的答案建议使用轴的

  • 我已经自定义了项目标签的位置,这样当标签不适合条内时,标签就会出现在条外,如下所示。 当文本位于条内时,如何为标签赋予不同的颜色。e、 g内部为白色文本,外部为黑色文本。我试过下面的代码,但它总是显示黑色。我希望20个显示为白色,57个和30个显示为黑色文本 注意:这是一个为贾斯珀软件工作室条形图编写的定制器类

  • 演示代码和显示颜色差异的在线Jupyter笔记本位于:https://anaconda.org/walter/pandas_seaborn_color/notebook 当我使用dataframe方法绘制条形图时,颜色是错误的。Seaborn改进了matplotlib的调色板。matplotlib中的所有绘图自动使用新的Seaborn调色板。但是,数据帧中的条形图将恢复为非Seaborn颜色。这种

  • 我想做一个这样的图表: 问题是我不知道如何使用MPAndroidChart设置这样的渐变颜色。也许我应该使用其他图书馆? 也许使用透明颜色(和渐变背景)的进度条更好? 这是我的代码:

  • 我知道我可以使用以下代码设置图例项目的设置颜色:

  • 我在通知中使用的URL生成时遇到了这个问题。然而,在我的手机上,就像一个白色的小方块一样显示出来。我查了一下,发现很多帖子都是这样说的:通知中没有显示图标:显示的是白色方块 而且我确信通知的确实是透明的。但是,对于,我意识到不可能是透明的,因为它实际上是我从URL生成的。我怎样才能绕过这个问题,并确保图像呈现正确,而不是显示为白色正方形?以下是我的尝试: notificationService.j