Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Altair alt.condition中的动态名称_Python_Charts_Data Visualization_Vega_Altair - Fatal编程技术网

Python Altair alt.condition中的动态名称

Python Altair alt.condition中的动态名称,python,charts,data-visualization,vega,altair,Python,Charts,Data Visualization,Vega,Altair,我将按照此示例创建一个条形图,该条形图的条件颜色格式为负值: import altair as alt from vega_datasets import data source = data.us_employment() alt.Chart(source).mark_bar().encode( x="month:T", y="nonfarm_change:Q", color=alt.condition( alt.datum.nonfarm_change >

我将按照此示例创建一个条形图,该条形图的条件颜色格式为负值:

import altair as alt
from vega_datasets import data

source = data.us_employment()

alt.Chart(source).mark_bar().encode(
  x="month:T",
  y="nonfarm_change:Q",
  color=alt.condition(
      alt.datum.nonfarm_change > 0,
      alt.value("steelblue"),  # The positive color
      alt.value("orange")  # The negative color
  )
 ).properties(width=600)

如何将
alt.datum.nonfarm\u change
替换为接受动态变量名称(例如数据帧的不同列)的表达式?

Python提供了一个
getattr
函数,允许您从任何Python对象获取动态属性,因此您可以使用
getattr(alt.datum,col\u name)
alt.datum
对象获取动态列名

但直接将筛选条件指定为字符串可能更容易;类似这样的内容(利用):


不清楚你在问什么。“动态变量名”是什么意思?你能举个例子吗?我的意思是我希望能够将变量的名称作为参数传递,而不是硬编码。假设我的plot嵌入到一个函数中,该函数返回plot JSON表示,并且该函数接受一个变量作为输入参数。假设变量名为var,那么如何执行alt.datum.var?现在,如果列名有一个空格怎么办?“利润损失”。我正在尝试alt.datum。[“利润损失”]>0或alt.datum.str(“利润损失”)。。。如何在名称中包含空格的条件中使用列名?感谢使用括号表示法:
alt.datum['price Loss']
是否可以绘制alt.Condition()例程中指定颜色的图例。在本例中,该元素包含一个值
import altair as alt
from vega_datasets import data

def plot_column(col_name: str) -> alt.Chart:
    source = data.us_employment()

    return alt.Chart(source).mark_bar().encode(
      x="month:T",
      y=f"{col_name}:Q",
      color=alt.condition(
          f"datum.{col_name} > 0",
          alt.value("steelblue"),  # The positive color
          alt.value("orange")  # The negative color
      )
    ).properties(width=600)

plot_column("nonfarm_change")