【发布时间】:2021-11-02 16:06:34
【问题描述】:
我正在使用以下代码创建一个极坐标图。
import plotly as pt
import plotly.express as px
import pandas as pd
df = pd.read_csv('newdata.csv')
range_num = list(range(100,181, 5))
options = ['NOT_VISIBLE', 'NOT_POSSIBLE', 'ABOVE_LIMIT']
all_options = incompletes + ([str(num) for num in range_num])
dfnew = df.drop(['IDENT', 'LOCATION', 'MONTH', 'AGE'], axis = 1)
df['PT'] = dfnew.ffill(axis='columns').iloc[:, -1]
data = df.groupby('AGE')['PT'].value_counts().reset_index(name='COUNT')
fig = px.line_polar(data, r="COUNT", theta="PT", color="AGE", line_close=True,
color_discrete_sequence=px.colors.sequential.Plasma_r)
fig.show()
这显示了一个极坐标图,其中绘制了 AGE=YES 和 AGE=NO 的两组数据(YES 和 NO 是 AGE 列中的两个值)。我的问题是极坐标图周围的数据杂乱无章。我希望顶部以NOT_VISIBLE 开头,然后顺时针方向,然后是NOT_POSSIBLE ABOVE_LIMIT 和升序排列的数字(100、105、110 等)。
我确信有一种简单的方法可以做到这一点,但我是 python 新手,似乎无法弄清楚。
我尝试过:
SC = sorted(['PT'])
但这没有奏效,不知道还能尝试什么,非常感谢任何帮助。
Python 2.7 和 PANDAS 0.24.2
编辑:下面的数据(实际数据包含更多行)。
pd.DataFrame({'IDENT': {0L: 'ID76', 1L: 'ID34', 2L: 'ID51', 3L: 'ID97', 4L: 'ID73', 5L: 'ID14', 6L: 'ID64', 7L: 'ID10', 8L: 'ID32', 9L: 'ID89', 10L: 'ID27', 11L: 'ID19', 12L: 'ID80', 13L: 'ID71', 14L: 'ID08', 15L: 'ID47', 16L: 'ID66', 17L: 'ID23'}, 'AGE': {0L: 'YES', 1L: 'NO', 2L: 'YES', 3L: 'NO', 4L: 'NO', 5L: 'NO', 6L: 'YES', 7L: 'YES', 8L: 'YES', 9L: 'NO', 10L: 'YES', 11L: 'YES', 12L: 'NO', 13L: 'YES', 14L: 'NO', 15L: 'NO', 16L: 'YES', 17L: 'YES'}, 'MONTH': {0L: 1990L, 1L: 2000L, 2L: 2010L, 3L: 2020L, 4L: 2020L, 5L: 2010L, 6L: 2000L, 7L: 1990L, 8L: 2020L, 9L: 2010L, 10L: 1990L, 11L: 2020L, 12L: 2000L, 13L: 2010L, 14L: 1990L, 15L: 2020L, 16L: 2000L, 17L: 1990L}, 'LOCATION': {0L: 'E1', 1L: 'E4', 2L: 'E2', 3L: 'E1', 4L: 'E3', 5L: 'E4', 6L: 'E3', 7L: 'E1', 8L: 'E2', 9L: 'E1', 10L: 'E2', 11L: 'E3', 12L: 'E2', 13L: 'E1', 14L: 'E4', 15L: 'E3', 16L: 'E4', 17L: 'E2'}, 'PT5': {0L: nan, 1L: 'ABOVE_LIMIT', 2L: nan, 3L: nan, 4L: nan, 5L: nan, 6L: nan, 7L: nan, 8L: '100', 9L: nan, 10L: nan, 11L: nan, 12L: 'NOT_POSSIBLE', 13L: nan, 14L: nan, 15L: nan, 16L: '165', 17L: 'NOT_POSSIBLE'}, 'PT4': {0L: '110', 1L: nan, 2L: '145', 3L: nan, 4L: 'NOT_VISIBLE', 5L: nan, 6L: '105', 7L: nan, 8L: nan, 9L: nan, 10L: 'ABOVE_LIMIT', 11L: nan, 12L: nan, 13L: nan, 14L: 'NOT_VISIBLE', 15L: nan, 16L: nan, 17L: '130'}, 'PT3': {0L: nan, 1L: 'NOT_POSSIBLE', 2L: nan, 3L: nan, 4L: nan, 5L: nan, 6L: nan, 7L: 'NOT_POSSIBLE', 8L: nan, 9L: nan, 10L: nan, 11L: 'NOT_VISIBLE', 12L: nan, 13L: nan, 14L: nan, 15L: nan, 16L: nan, 17L: nan}, 'PT2': {0L: nan, 1L: nan, 2L: nan, 3L: '160', 4L: nan, 5L: nan, 6L: nan, 7L: '180', 8L: 'NOT_VISIBLE', 9L: nan, 10L: '160', 11L: nan, 12L: nan, 13L: nan, 14L: nan, 15L: nan, 16L: nan, 17L: 'ABOVE_LIMIT'}, 'PT1': {0L: nan, 1L: nan, 2L: nan, 3L: nan, 4L: 'ABOVE_LIMIT', 5L: nan, 6L: nan, 7L: nan, 8L: nan, 9L: nan, 10L: nan, 11L: nan, 12L: '115', 13L: nan, 14L: nan, 15L: nan, 16L: nan, 17L: nan}})
+-------+----------+-----+-------+------+------+-------+------+--------------+
| IDENT | LOCATION | AGE | MONTH | PT1 | PT2 | PT3 | PT4 | PT5 |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID76 | E1 | YES | 1990 | | | | 110 | |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID34 | E4 | NO | 2000 | | | NOT_POSSIBLE | ABOVE_LIMIT |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID51 | E2 | YES | 2010 | | | | 145 | |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID97 | E1 | NO | 2020 | | 160 | | | |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID73 | E3 | NO | 2020 | ABOVE_LIMIT | | NOT_VISIBLE |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID14 | E4 | NO | 2010 | | | | | |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID64 | E3 | YES | 2000 | | | | 105 | |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID10 | E1 | YES | 1990 | | 180 | NOT_POSSIBLE | |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID32 | E2 | YES | 2020 | | NOT_VISIBLE | | 100 |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID89 | E1 | NO | 2010 | | | | | |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID27 | E2 | YES | 1990 | | 160 | | ABOVE_LIMIT |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID19 | E3 | YES | 2020 | | | NOT_VISIBLE | |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID80 | E2 | NO | 2000 | 115 | | | | NOT_POSSIBLE |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID71 | E1 | YES | 2010 | | | | | |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID08 | E4 | NO | 1990 | | | | NOT_VISIBLE |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID47 | E3 | NO | 2020 | | | | | |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID66 | E4 | YES | 2000 | | | | | 165 |
+-------+----------+-----+-------+------+------+-------+------+--------------+
| ID23 | E2 | YES | 1990 | | ABOVE_LIMIT | 130 | NOT_POSSIBLE |
+-------+----------+-----+-------+------+--------------+------+--------------+
【问题讨论】:
-
请按照here 的说明分享您的数据样本,以使您的代码可重现。
-
谢谢,最初的问题已被编辑。
标签: python pandas python-2.7 plotly