Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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 牛郎星柱状图,有没有可能给马可定律起个名字?_Python_Plot_Altair - Fatal编程技术网

Python 牛郎星柱状图,有没有可能给马可定律起个名字?

Python 牛郎星柱状图,有没有可能给马可定律起个名字?,python,plot,altair,Python,Plot,Altair,我有一个数据框,我画了下面的图 代码如下: import altair as alt alt.renderers.enable('default') base = alt.Chart(df_800).properties() bar = base.mark_bar().encode( x=alt.X('volumechange', bin=True, title='Volume Change'), y='count()' ) rule = base.mark_rule(co

我有一个数据框,我画了下面的图

代码如下:

import altair as alt
alt.renderers.enable('default')

base = alt.Chart(df_800).properties()

bar = base.mark_bar().encode(
    x=alt.X('volumechange', bin=True, title='Volume Change'),
    y='count()'
)

rule = base.mark_rule(color='red').encode(
    x='mean(volumechange)',
    size=alt.value(5)
)

rule2 = base.mark_rule(color='orange').encode(
    x='median(volumechange)',
    size=alt.value(5),
)

bar + rule + rule2

我想添加一个图例或类似的东西来显示红色规则是体积变化的平均值,橙色是中值。这是我第一次使用altair,非常感谢您的帮助。

altair中的图例是根据颜色编码自动生成的,所以诀窍是将聚合设置为一种格式,其中它们的标签是按颜色编码的列。这里有一种方法可以做到:

import pandas as pd
import numpy as np
df_800 = pd.DataFrame({'volumechange': np.random.randn(100)})

base = alt.Chart(df_800)

bar = base.mark_bar(color='lightgray').encode(
    x=alt.X('volumechange', bin=True, title='Volume Change'),
    y='count()'
)

aggregates = base.transform_aggregate(
    mean='mean(volumechange)',
    median='median(volumechange)',
).transform_fold(
    ['mean', 'median']
).mark_rule().encode(
    x='value:Q',
    color='key:N'
)

bar + aggregates

Altair中的图例是根据颜色编码自动生成的,所以诀窍是将聚合转换为一种格式,其中它们的标签是按颜色编码的列。这里有一种方法可以做到:

import pandas as pd
import numpy as np
df_800 = pd.DataFrame({'volumechange': np.random.randn(100)})

base = alt.Chart(df_800)

bar = base.mark_bar(color='lightgray').encode(
    x=alt.X('volumechange', bin=True, title='Volume Change'),
    y='count()'
)

aggregates = base.transform_aggregate(
    mean='mean(volumechange)',
    median='median(volumechange)',
).transform_fold(
    ['mean', 'median']
).mark_rule().encode(
    x='value:Q',
    color='key:N'
)

bar + aggregates

我试过了,但在关键点我得到了圆圈标记,而不是线。我使用了完全相同的代码,如何修复此问题?将渲染器更新为最新版本的Vega-Lite。是否可以使规则更厚?我尝试在mark_规则中添加厚度和宽度,但它们没有改变任何东西。是的,您可以像在原始代码中一样使用大小编码,也可以将大小参数传递给mark_规则。如何更改聚合的颜色?我尝试了这一点,但在关键点中,我得到的是圆形标记而不是直线。我使用了完全相同的代码,如何修复此问题?将渲染器更新为最新版本的Vega-Lite。是否可以使规则更厚?我尝试在mark_规则中添加厚度和宽度,但它们没有改变任何东西。是的,您可以像在原始代码中那样使用大小编码,也可以将大小参数传递给mark_规则。如何更改聚合的颜色?