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")