Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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 绘图多类别X轴排序_Python_Plotly - Fatal编程技术网

Python 绘图多类别X轴排序

Python 绘图多类别X轴排序,python,plotly,Python,Plotly,我正在尝试创建一个带有日期的多类别x轴,下面的代码和图表给出了我想要的它的外观,但它只是不符合顺序。我曾尝试使用“原始x轴”列而不是月份列,但格式显示不正确,我似乎无法更改格式 import random import numpy as np import plotly.express as px df = pd.DataFrame({"Year":np.repeat([2018,2019],[8,12]), "Month"

我正在尝试创建一个带有日期的多类别x轴,下面的代码和图表给出了我想要的它的外观,但它只是不符合顺序。我曾尝试使用“原始x轴”列而不是月份列,但格式显示不正确,我似乎无法更改格式

import random
import numpy as np
import plotly.express as px

df = pd.DataFrame({"Year":np.repeat([2018,2019],[8,12]), 
              "Month": ["May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "Jan", "Feb", "Mar", "Apr","May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
             "Original x-axis": pd.date_range(start = "2018-05-01", end = "2019-12-01", freq = "MS"),
             "Customer Satisfaction Score": random.sample(range(30,100), 20)})


fig = go.Figure()

fig.add_trace(go.Scatter(
                        #x = cust["Original x-axis"], 
                        x = [df["Year"],df["Month"]],
                      y = df["Customer Satisfaction Score"], mode = "lines"))

fig.update_layout(plot_bgcolor = "white",
                 annotations = [dict(text = "Customer Satisfaction Score",
                                    yref = "paper",
                                    xref = "paper",
                                    x = 0,
                                    y = 1.1,
                                     font = dict(size = 16, color = "#909497"),
                                    showarrow = False)],
                 font = dict(size = 12, color = "#BDC3C7"))
                 #xaxis = dict(tickformat = "%b"))

fig.show()

请检查代码片段。您需要根据年以及月对日期时间列进行排序

在这里,我创建了一个额外的专栏。其余部分都一样

df['month'] = df['Original x-axis'].dt.strftime('%b-%Y')


请检查代码片段。您需要根据年以及月对日期时间列进行排序

在这里,我创建了一个额外的专栏。其余部分都一样

df['month'] = df['Original x-axis'].dt.strftime('%b-%Y')


那么你希望你的x轴是什么样的呢?你能详细说明一下你需要的x轴是什么格式吗?基本上和图表上的格式是一样的,但只是按照顺序,2019年从5月开始,1月到4月在2019年底,那么你希望你的x轴是什么格式?你能详细说明一下你需要的xaxis格式吗?基本上它在图表上的格式是一样的,但只是顺序一样,2019年从5月开始,1月到4月在2019年底谢谢你的回复,但我正在努力消除今年不必要的重复,因此,我只希望2018年5月至12月在图表左侧显示一次,2019年1月至12月在图表右侧显示一次。@FluffySheep1990据我所知,这是不可能的,因为您的2018专栏中没有1月至4月。您可以按年份对列进行排序,但在这种情况下,2019年将排在第一位,2018年将排在第二位,您的图表将略有变化,但格式将保持不变。或者,您可以根据日期时间条件以编程方式将2018年的1月至4月相加,并将您的客户满意度得分映射到2018年1月至4月的NaN。这也会起作用,你的格式将保持不变,只是因为NaN,你在开始时会有一些空白。谢谢你的回复,但我正在努力消除今年不必要的重复,因此,我只希望2018年5月至12月在图表左侧显示一次,2019年1月至12月在图表右侧显示一次。@FluffySheep1990据我所知,这是不可能的,因为您的2018专栏中没有1月至4月。您可以按年份对列进行排序,但在这种情况下,2019年将排在第一位,2018年将排在第二位,您的图表将略有变化,但格式将保持不变。或者,您可以根据日期时间条件以编程方式将2018年的1月至4月相加,并将您的客户满意度得分映射到2018年1月至4月的NaN。这也将工作,你的格式将保持不变,只是你会有一些空白,在开始由于NaN。