【问题标题】:Altair: Selecting a color from a Vega color scheme for plotAltair:从 Vega 配色方案中选择一种颜色进行绘图
【发布时间】:2022-06-15 12:23:27
【问题描述】:

所以我知道您可以通过设置 color='blue' 或指定十六进制代码来选择 Altair 图中的颜色。我想知道是否可以在不明确指定其十六进制代码的情况下使用 Vega 配色方案(如 dark2 或 set1)中的单一颜色。

我希望它是这样的:


color = sample_from_scheme('set1')

alt.Chart(df).mark_circle().encode(
    x='X',
    y='Y',
    color=color
).save(
    "image.html"
)

【问题讨论】:

    标签: python plot altair


    【解决方案1】:

    方案名称在 Javascript 渲染器中进行评估;目前无法从 Python 中访问由方案名称表示的颜色。

    您可以在此处查看 Vega 的 javascript 源代码中颜色方案的定义位置:https://github.com/vega/vega/blob/v5.21.0/packages/vega-scale/src/palettes.js

    例如,set1['e41a1c', '377eb8', '4daf4a', '984ea3', 'ff7f00', 'ffff33', 'a65628', 'f781bf', '999999'] 组成

    【讨论】:

      【解决方案2】:

      您可以通过解析 Vega 存储库中的配色方案源文件来访问 Vega 配色方案中的单一颜色:

      color_scheme = 'set1'
      color_number = 0
      
      color = pd.read_table(
          'https://raw.githubusercontent.com/vega/vega/v5.21.0/packages/vega-scale/src/palettes.js',
          skipinitialspace=True,
          sep=':',
      ).loc[
          color_scheme
      ].str.replace(
          "'",
          ""
      ).apply(
          lambda x: ["#" + x[i:i+6] for i in range(0, len(x)-1, 6)]
      )[0][color_number]
      
      color
      

      输出:

      '#e41a1c'
      

      您可以转到https://vega.github.io/vega/docs/schemes/ 并悬停名称以查看所有颜色以供确认。

      【讨论】:

        猜你喜欢
        • 2016-05-24
        • 2018-08-12
        • 2023-01-27
        • 2011-03-14
        • 2020-08-30
        • 1970-01-01
        • 2021-05-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多