Altair/Streamlit 未读取多线图的列名

Posted

技术标签:

【中文标题】Altair/Streamlit 未读取多线图的列名【英文标题】:Altair/Streamlit not reading column name for multiline chart 【发布时间】:2021-03-20 11:10:31 【问题描述】:

我的数据框的列名格式为'State1 - City - 1-1''State1 - City - 1-2' ....etc。当我运行 streamlit 代码时:st.line_chart(df),我得到错误:

ValueError: 变量编码字段没有指定类型;这 无法推断类型,因为它与 数据

出于测试目的,如果我将所有列名更改为整数,我会得到所需的图表。

【问题讨论】:

【参考方案1】:

当您看到此错误时,表示图表中使用的列名与数据框中的列名不匹配。就您而言,我怀疑这可能是由于使用了不同类型的连字符造成的。例如:

>>> 'State1 - City - 1-1' == 'State1 – City – 1-1'
False

第一个字符串中的'-' 字符是连字符,而第二个字符串中的'–' 字符是破折号;尽管它们在某些字体中看起来相似,但它们并不等同。

确保图表中的字段名称与数据中的列名称完全匹配。

【讨论】:

感谢您对此进行调查。我完全删除了空格和“-”,但它仍然失败。我没有明确指定要绘制的列,它是一个多线图,所以我希望它能够绘制所有列。我有一个 load_data() 函数,输出直接传递给 st.line_chart(df) 另外,我应该补充一点,st.dataframe(df) 有效 已修复。我的数据透视表有一个带有名称的列索引。删除列索引名称修复了它。 我必须将列名明确指定为字符串(即使它们之前是字符串)才能进行绘图 - df.columns = [str(col) for col in df.columns]

以上是关于Altair/Streamlit 未读取多线图的列名的主要内容,如果未能解决你的问题,请参考以下文章

R 具有自定义线型的多线绘图图

是否有通用的方法来读取spark中的多线json。更具体的是火花?

使用 flexbox 具有相同高度元素的多线网格

echarts中多线图轮播展示--timeLine

我应该如何使用熊猫读取没有“未命名”行的 csv 文件? [复制]

如何摆脱从 CSV 文件读取的 pandas DataFrame 中的“未命名:0”列?