- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是对 Altair: Sorting faceted “text” chart not reflecting expectation 的跟进查询.我用一列额外的列修改了数据框。我的目标是对“标记”列中的对象进行分组,以便最终得到一个多面的图形,每个图形都带有条形和文本。数据框如下。在尝试刻面之前,我正在粘贴单个图像的外观。我随后粘贴了代码和我最好的尝试。我想知道是否有办法在 altair 代码中执行此操作,或者您是否建议使用 for 循环在 altair 代码之外执行 groupby。
,Bug,Unknown,Level,LDA_Score,p_value,Marker
0,a,4.10808792666,Low,3.43193376894,0.0381678194757,GM
1,b,2.80231776318,High,2.86568860404,0.048078814719199996,GM
2,c,1.55012602444,High,3.0159901714,0.047006554908300004,GM
3,d,2.11298173821,High,2.94493334678,0.0120363750248,GM
4,e,2.08807237447,High,2.9096371889,0.0149437560986,GM
5,f,2.762619332479999,High,2.52323422148,0.040652301139,GM
6,g,4.390454714340001,Low,3.85075499081,0.029978515680400004,GM
7,h,3.32306083381,High,3.01988462626,0.0244409015043,GM
8,i,2.84614167157,High,2.97142565384,0.0438396924694,GM
9,j,4.51419624602,Low,3.84190054285,0.0460224914387,GM
10,k,4.027450677669999,High,3.52319882849,0.0113390729281,IFN
11,l,4.26967903787,Low,3.8458771734,0.00548234585386,IFN
12,m,1.7823168924,High,2.50020069082,0.0203578926278,IFN
此代码和图像是不尝试按最后一列分组的样子:
y_sort = alt.EncodingSortField(field='LDA_Score', order='descending')
bars = alt.Chart(df).mark_bar().encode(
alt.X('LDA_Score', title='LDA_Score (log10)', axis=alt.Axis(titleFontSize=14)),
alt.Y("Bug:N", sort=y_sort, axis=alt.Axis(title=None, labelFontStyle='italic')),
color=alt.Color('Level:N', legend=alt.Legend(title=None, labelFontSize=12, orient='right')),# scale=alt.Scale(domain=['>12weeks', '<12weeks'], range=['green', 'red'])),
row=alt.Row('Level:N', header=alt.Header(title=None, labelFontSize=0), spacing=0),
).resolve_scale(
y='independent'
)
text = alt.Chart(df).mark_text().encode(
alt.Text('p_value:Q', format='.3e'),
alt.Y("Bug:N", sort=y_sort, axis=None),
row=alt.Row('Level:N', header=alt.Header(title=None, labelFontSize=0), spacing=0),
).resolve_scale(
y='independent'
).properties(width=50, title="p_value"
)
FinalChart = alt.hconcat(bars, text, spacing=-10)\
.configure_title(anchor='end', fontStyle='italic', fontSize=14)\
.configure_axis(grid=True, gridOpacity=0.5).configure_view(opacity=0.5)
FinalChart.display()
y_sort = alt.EncodingSortField(field='LDA_Score', order='descending')
bars = alt.Chart(df).mark_bar().encode(
alt.X('LDA_Score', title='LDA_Score (log10)', axis=alt.Axis(titleFontSize=14)),
alt.Y("Bug:N", sort=y_sort, axis=alt.Axis(title=None, labelFontStyle='italic')),
color=alt.Color('Level:N', legend=alt.Legend(title=None, labelFontSize=12, orient='right')),# scale=alt.Scale(domain=['>12weeks', '<12weeks'], range=['green', 'red'])),
row=alt.Row('Level:N', header=alt.Header(title=None, labelFontSize=0), spacing=0),
).resolve_scale(
y='independent'
).facet(column='Marker')
text = alt.Chart(df).mark_text().encode(
alt.Text('p_value:Q', format='.3e'),
alt.Y("Bug:N", sort=y_sort, axis=None),
row=alt.Row('Level:N', header=alt.Header(title=None, labelFontSize=0), spacing=0),
).resolve_scale(
y='independent'
).properties(width=50, title="p_value"
).facet(column='Marker')
FinalChart = alt.hconcat(bars, text, spacing=-10)\
.configure_title(anchor='end', fontStyle='italic', fontSize=14)\
.configure_axis(grid=True, gridOpacity=0.5).configure_view(opacity=0.5)
FinalChart.display()
最佳答案
您所追求的是对连接图表进行分面;不幸的是,Altair 或 Vega-Lite 不支持此功能。但是您可以通过手动构建 facet 来解决这个问题:facet 操作基本上是一个过滤器加上一个 concat,因此您可以像这样构建所需的图表:
import altair as alt
import pandas as pd
from io import StringIO
df = pd.read_csv(StringIO("""\
,Bug,Unknown,Level,LDA_Score,p_value,Marker
0,a,4.10808792666,Low,3.43193376894,0.0381678194757,GM
1,b,2.80231776318,High,2.86568860404,0.048078814719199996,GM
2,c,1.55012602444,High,3.0159901714,0.047006554908300004,GM
3,d,2.11298173821,High,2.94493334678,0.0120363750248,GM
4,e,2.08807237447,High,2.9096371889,0.0149437560986,GM
5,f,2.762619332479999,High,2.52323422148,0.040652301139,GM
6,g,4.390454714340001,Low,3.85075499081,0.029978515680400004,GM
7,h,3.32306083381,High,3.01988462626,0.0244409015043,GM
8,i,2.84614167157,High,2.97142565384,0.0438396924694,GM
9,j,4.51419624602,Low,3.84190054285,0.0460224914387,GM
10,k,4.027450677669999,High,3.52319882849,0.0113390729281,IFN
11,l,4.26967903787,Low,3.8458771734,0.00548234585386,IFN
12,m,1.7823168924,High,2.50020069082,0.0203578926278,IFN
"""))
y_sort = alt.EncodingSortField(field='LDA_Score', order='descending')
bars = alt.Chart(df).mark_bar().encode(
alt.X('LDA_Score', title='LDA_Score (log10)', axis=alt.Axis(titleFontSize=14)),
alt.Y("Bug:N", sort=y_sort, axis=alt.Axis(title=None, labelFontStyle='italic')),
color=alt.Color('Level:N', legend=alt.Legend(title=None, labelFontSize=12, orient='right')),# scale=alt.Scale(domain=['>12weeks', '<12weeks'], range=['green', 'red'])),
row=alt.Row('Level:N', header=alt.Header(title=None, labelFontSize=0), spacing=0),
column=alt.Column('Marker:N', title=None),
).resolve_scale(
y='independent'
)
text = alt.Chart(df).mark_text().encode(
alt.Text('p_value:Q', format='.3e'),
alt.Y("Bug:N", sort=y_sort, axis=None),
row=alt.Row('Level:N', header=alt.Header(title=None, labelFontSize=0), spacing=0),
).resolve_scale(
y='independent'
).properties(width=50, title="p_value"
)
FinalChart = alt.hconcat(
bars.transform_filter('datum.Marker == "GM"'),
text.transform_filter('datum.Marker == "GM"'),
bars.transform_filter('datum.Marker == "IFN"'),
text.transform_filter('datum.Marker == "IFN"')
).configure_title(anchor='end', fontStyle='italic', fontSize=14)\
.configure_axis(grid=True, gridOpacity=0.5).configure_view(opacity=0.5)
FinalChart.display()
关于altair - 在 altair-viz 中对连接的图像进行分面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64452794/
给定一个交互式面积图,如下所示: import altair as alt from vega_datasets import data source = data.iowa_electricity(
有一个散点图,我知道您在比例尺上使用绑定(bind)进行平移并使用滚轮进行缩放,这很棒。但是,一旦缩放,就需要一种方法来进行选择间隔,而无需进一步缩放效果。例如,需要一种通过 shift 键暂停或退出
[![图表显示没有正确格式的数字][1]][1] 我需要格式化这些条上的标签,以便将它们四舍五入到最接近的整数。我有以下代码: def chart_tender_response_times(data
这是对 Altair: Sorting faceted “text” chart not reflecting expectation 的跟进查询.我用一列额外的列修改了数据框。我的目标是对“标记”列
我正在尝试按照 Multi-Line Tooltip example 的方式创建一个图表,但我想格式化正在打印的字符串以在末尾添加一些文本。我正在尝试修改这部分: # Draw text labels
我正在尝试在 VL/Altair 中制作如下图表: 在本例中,X 轴标签的功能类似于 VL headers据我所知。在 VL/Altair 中,标题会自动设置在每个子图的顶部(例如, this cha
我有一个数据框,我想根据下拉菜单对其进行子选择。所以给定以下代码: import pandas as pd import altair as alt from vega_datasets import
这是取自 Altair documentation 的代码关于配色方案。 alt.Chart(iris).mark_point().encode( x='petalWidth', y=
如果可能,我想使用 altair 创建一个水平条形图,其中包含水平连接并与条形对齐的表格中的一列或多列。我正在粘贴一个快速 Excel 图表的示例,以大致了解我想要什么。 以下示例来自您的网站(代码和
我有一个包含一堆分箱数据的直方图,我想知道如果我从直方图中选择一个条形图是否可以生成一个表,它会显示原始数据框中的数据。 最佳答案 您可以使用 mark_text 创建表格的外观。这是 an exam
我想绘制具有多个 y 轴的平行坐标图。我已经在 Vega-Lite 中找到了如何做到这一点 here但我还没有找到使用 Altair 的方法,只有一个 very simple example其中所有
对于下面的示例,我想使用绿色配色方案进行导出,使用红色进行导入。当我单独创建图表时,一切都很好,它们得到了我分配给它们的配色方案。然而,当我连接图表时,他们都得到了红色方案。 import panda
当使用日期字段对颜色进行编码时,色标范围不会跨越整个配色方案渐变范围。例如,这个: alt.Chart(mydf).mark_point().encode( x='date:T', y
有没有办法让 Python Altair 绘图显示两个偏差标准?使用 mark_errorbar(extent='stdev') 仅显示一个标准偏差。 # Only shows one standar
我正在尝试在 Altair 上绘制以下内容:x = 每日时间戳y = 记录数,因为数据是名义上的而非定量的 当我尝试按月或季度汇总 x 时,是否可以将 y 显示为每天的平均记录数而不是总和? char
这个 question解决如何使用 mark_text() 访问和显示 R2 值 我对访问和显示系数感兴趣。将 rSquared 替换为 coef 会产生截距和斜率的扁平数组,如 documentat
无法为以下直方图中的分箱值着色。我打算对 x 轴上小于 50 的所有条进行着色(信用度)。 Altair 是如何做到的? base = alt.Chart(X_train) histogram = b
当我绘制由两组线组成的分层图表时,一层中的工具提示不显示。这也发生在 VL 编辑器中。任何关于为什么会发生这种情况的见解将不胜感激。 这是一个可重现的例子来演示这个问题(实际上我在第一层有更多行):
我可以修改经典Simple Scatter Plot with Tooltips , 为标记添加不透明度,但我想图例颜色保持 100% 不透明。在我尝试制作的图表中,我有一个包含数万行的 df。 im
我希望使用 altair 创建一个类似于附图的图,该图是使用 matplotlib 绘制的。基本上,一条绘制平均值的线和一个置信区间。 我的数据框看起来像这样。 dfr = pd.DataFrame(
我是一名优秀的程序员,十分优秀!