Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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_Data Visualization_Altair - Fatal编程技术网

Python 交互式牵牛星图中的条宽

Python 交互式牵牛星图中的条宽,python,data-visualization,altair,Python,Data Visualization,Altair,我怎样才能使酒吧宽到一整天?现在,酒吧更像是一天开始的标线。是否从条形标记切换到矩形标记?我会玩电子秤吗?还是在不修改数据的情况下强制装箱 现在的栅栏太薄了。因为图形是交互式的,所以我无法设置条形图的宽度;宽度与缩放无关。放大太远,条形图开始重叠。放大太远,它们看起来又像线条了 天在x轴上。标签不应该改变。图形是交互式的,其宽度是固定的。条形图之间的空白应反映缺少的天数,不得用条形图填充 import pandas as pd import numpy as np import altair a

我怎样才能使酒吧宽到一整天?现在,酒吧更像是一天开始的标线。是否从条形标记切换到矩形标记?我会玩电子秤吗?还是在不修改数据的情况下强制装箱

现在的栅栏太薄了。因为图形是交互式的,所以我无法设置条形图的宽度;宽度与缩放无关。放大太远,条形图开始重叠。放大太远,它们看起来又像线条了

天在x轴上。标签不应该改变。图形是交互式的,其宽度是固定的。条形图之间的空白应反映缺少的天数,不得用条形图填充

import pandas as pd
import numpy as np
import altair as alt

c1 = np.random.randint(1,6, size=15)
c2 = pd.date_range(start="2021-01-01",end="2021-01-15")
df = pd.DataFrame({"day": c2, "value": c1})
df = df.drop([2, 5,6,7,13])
alt.Chart(df).mark_bar().encode(alt.X("day:T"), alt.Y("value")).interactive(bind_y=False).properties(width=800)


理想情况下,当条形图填满一整天时,日标记应该集中在条形图上(而不是在开始处)。

您可以通过使用带有。即更换

alt.X(“日期:T”)

alt.X(“日期(天):O”)
结果如下所示:

根据需要的轴标签,可以使用
monthdate
yearmonthdate
时间单位

如果希望轴仍然是交互式的,则不能选择顺序编码。在这种情况下,另一个选项是使用
X
X2
编码指定条形宽度,并使用计算变换来定义限制。例如:

alt.Chart(df).transform\u计算(
day=“toDate(datum.day)”,
start=“datum.day-12*60*60*1000”,#-12小时(毫秒)
end=“datum.day+12*60*60*1000”、#+12小时(毫秒)
).mark_bar().encode(
alt.X(“开始:T”),
备选案文X2(“结束:T”),
alt.Y(“价值”)
).interactive(bind_y=False).properties(width=800)

顺序编码的问题在于,丢失的天数被丢弃,图形不再是交互式的。当数字重复时,日时间单位与多个月的顺序编码的工作情况如何?如果有多个月,可以使用monthdate时间单位。如果您有跨越多年的月份,您可以使用yearmonthdate时间单位。有关另一种方法,请参阅已编辑的答案。我注意到您可以执行
alt.X(“日期(天):T”)
,它支持交互性和缺少的值。当然,数据仍然是连续的,因此频带缩放不是一个选项。我喜欢
yearmonthdate
,但希望它只显示年份边界,在标签中包括工作日,将标签居中到当天,放大时每个数据点只显示一个标签。这在很大程度上也适用于
X
/
X2
编码。我要看一下时间格式的文档。我只想问另一个问题。