Plotly Python - Y 标记顺序错误
Plotly Python - Y Ticks in Wrong Order
我有一个数据集,我正在使用 python 绘图,但由于某种原因,y 轴刻度的顺序错误。当 y 轴上的值减小时,图表上的线会变高。
这是数据集结构的一个小例子:
dfmeds =
Start Name Medication End Dose
2020-12-09 Yosemite Sam Lexapro 2021-06-30 5
2020-12-10 Yosemite Sam Lexapro 2021-06-30 5
2020-12-11 Yosemite Sam Lexapro 2021-06-30 5
2020-12-12 Yosemite Sam Lexapro 2021-06-30 5
2020-12-13 Yosemite Sam Lexapro 2021-06-30 5
2020-12-14 Yosemite Sam Lexapro 2021-06-30 5
2020-12-15 Yosemite Sam Lexapro 2021-06-30 4
2020-12-16 Yosemite Sam Lexapro 2021-06-30 4
2020-12-17 Yosemite Sam Lexapro 2021-06-30 4
2020-12-18 Yosemite Sam Lexapro 2021-06-30 4
2020-12-19 Yosemite Sam Lexapro 2021-06-30 4
2020-12-20 Yosemite Sam Lexapro 2021-06-30 3
2020-12-21 Yosemite Sam Lexapro 2021-06-30 3
2020-12-22 Yosemite Sam Lexapro 2021-06-30 3
2020-12-23 Yosemite Sam Lexapro 2021-06-30 3
2020-12-24 Yosemite Sam Lexapro 2021-06-30 3
2020-12-25 Yosemite Sam Lexapro 2021-06-30 2
2020-12-26 Yosemite Sam Lexapro 2021-06-30 2
2020-12-27 Yosemite Sam Lexapro 2021-06-30 2
2020-12-28 Yosemite Sam Lexapro 2021-06-30 2
以及我用来创建图形的代码...
fig2 = px.line(dfmeds, x='Start', y="Dose", color = "Medication",
# labels={"Episode_Count": tally + " per Shift",
# "Target":"Target",
# "Yr_Mnth": "Date" },
title="Medication Dosages")
fig2.update_xaxes(tickangle=45,)
fig2.update_yaxes(tickmode='linear')
fig2.update_layout(template = 'plotly_white',hovermode="x unified")
令人沮丧的是,这是我的输出:
请特别注意绿色轨迹。在网络编年史中,你们中的任何好心人都遇到过这种奇怪的现象吗?!我查看了 y-ticks 的文档,但找不到任何控制顺序的方法...
#############################编辑############### ###################
正如两个人在评论中指出的那样,缺少数字顺序的原因是“剂量”列作为对象传入,因此被作为分类处理。
所以我将数据类型更改为数字地址:
dfmeds["Dose"] = pd.to_numeric(dfmeds["Dose"])
尽管这引入了一个新问题,但由于剂量值的范围很大,y 轴刻度线全部聚集在一起:
我觉得我应该能够通过格式化 y 刻度来解决这个问题,尽管最好的情况是保留分类输入并控制顺序,因为这意味着可以在 y 上清楚地看到每条轨迹的值-axis.
如果有人有任何建议,我们将不胜感激。
正如问题的评论部分所指出的那样,y 轴值作为对象传入,因此被分类处理。
通过将 dfmeds['Dose'] 转换为数字很容易解决,在我的情况下,我还必须从第一行处理的一些单元格中提取文本:
#strip non numeric characters
dfmeds['Dose'] = dfmeds['Dose'].str.extract('(\d+)', expand=False)
#convert to numeric
dfmeds['Dose'] = pd.to_numeric(dfmeds['Dose'])
“编辑”中提到的问题是我将“tickmode”设置为线性。这也很容易通过删除来解决:
fig2.update_yaxes(tickmode='linear')
我希望这能帮助其他有需要的可怜人,编程愉快!
我有一个数据集,我正在使用 python 绘图,但由于某种原因,y 轴刻度的顺序错误。当 y 轴上的值减小时,图表上的线会变高。
这是数据集结构的一个小例子:
dfmeds =
Start Name Medication End Dose
2020-12-09 Yosemite Sam Lexapro 2021-06-30 5
2020-12-10 Yosemite Sam Lexapro 2021-06-30 5
2020-12-11 Yosemite Sam Lexapro 2021-06-30 5
2020-12-12 Yosemite Sam Lexapro 2021-06-30 5
2020-12-13 Yosemite Sam Lexapro 2021-06-30 5
2020-12-14 Yosemite Sam Lexapro 2021-06-30 5
2020-12-15 Yosemite Sam Lexapro 2021-06-30 4
2020-12-16 Yosemite Sam Lexapro 2021-06-30 4
2020-12-17 Yosemite Sam Lexapro 2021-06-30 4
2020-12-18 Yosemite Sam Lexapro 2021-06-30 4
2020-12-19 Yosemite Sam Lexapro 2021-06-30 4
2020-12-20 Yosemite Sam Lexapro 2021-06-30 3
2020-12-21 Yosemite Sam Lexapro 2021-06-30 3
2020-12-22 Yosemite Sam Lexapro 2021-06-30 3
2020-12-23 Yosemite Sam Lexapro 2021-06-30 3
2020-12-24 Yosemite Sam Lexapro 2021-06-30 3
2020-12-25 Yosemite Sam Lexapro 2021-06-30 2
2020-12-26 Yosemite Sam Lexapro 2021-06-30 2
2020-12-27 Yosemite Sam Lexapro 2021-06-30 2
2020-12-28 Yosemite Sam Lexapro 2021-06-30 2
以及我用来创建图形的代码...
fig2 = px.line(dfmeds, x='Start', y="Dose", color = "Medication",
# labels={"Episode_Count": tally + " per Shift",
# "Target":"Target",
# "Yr_Mnth": "Date" },
title="Medication Dosages")
fig2.update_xaxes(tickangle=45,)
fig2.update_yaxes(tickmode='linear')
fig2.update_layout(template = 'plotly_white',hovermode="x unified")
令人沮丧的是,这是我的输出:
请特别注意绿色轨迹。在网络编年史中,你们中的任何好心人都遇到过这种奇怪的现象吗?!我查看了 y-ticks 的文档,但找不到任何控制顺序的方法...
#############################编辑############### ###################
正如两个人在评论中指出的那样,缺少数字顺序的原因是“剂量”列作为对象传入,因此被作为分类处理。
所以我将数据类型更改为数字地址:
dfmeds["Dose"] = pd.to_numeric(dfmeds["Dose"])
尽管这引入了一个新问题,但由于剂量值的范围很大,y 轴刻度线全部聚集在一起:
我觉得我应该能够通过格式化 y 刻度来解决这个问题,尽管最好的情况是保留分类输入并控制顺序,因为这意味着可以在 y 上清楚地看到每条轨迹的值-axis.
如果有人有任何建议,我们将不胜感激。
正如问题的评论部分所指出的那样,y 轴值作为对象传入,因此被分类处理。
通过将 dfmeds['Dose'] 转换为数字很容易解决,在我的情况下,我还必须从第一行处理的一些单元格中提取文本:
#strip non numeric characters
dfmeds['Dose'] = dfmeds['Dose'].str.extract('(\d+)', expand=False)
#convert to numeric
dfmeds['Dose'] = pd.to_numeric(dfmeds['Dose'])
“编辑”中提到的问题是我将“tickmode”设置为线性。这也很容易通过删除来解决:
fig2.update_yaxes(tickmode='linear')
我希望这能帮助其他有需要的可怜人,编程愉快!