Python 如何使用pyplot通过减小y轴的值对散点图进行排序?
我有一个数据帧df1,包含两列freq和RN,数据按freq升序排序Python 如何使用pyplot通过减小y轴的值对散点图进行排序?,python,matplotlib,Python,Matplotlib,我有一个数据帧df1,包含两列freq和RN,数据按freq升序排序 In [2]: df1.head() Out[2]: freq RN 147 1 181 56 1 848 149 1 814 25 1 829 我想绘制一个散点图,X轴为RN,y轴为freq,其中X值按y值的升序排列,即,我想将X轴排列为841848835,。。。如df1所示,已根据频率值的升序进行排序 现在,如果我写plt.scatte
In [2]: df1.head()
Out[2]:
freq RN
147 1 181
56 1 848
149 1 814
25 1 829
我想绘制一个散点图,X轴为RN,y轴为freq,其中X值按y值的升序排列,即,我想将X轴排列为841848835,。。。如df1所示,已根据频率值的升序进行排序
现在,如果我写plt.scatter('RN','freq',data=df1)
我得到的输出x轴不是按频率的升序排序的。它是按自己的自然升序排列的,如800801,…,860
注意:plt.bar('RN','freq',data=df1)
以我想要的正确方式工作
如何更改它?- 如果
列是数字列,则绘图API将对其进行数字排序RN
- 如果将
列类型设置为RN
,则可以执行此操作。str
- 如果
中的值是唯一的,则此操作效果最佳。如果它们不是唯一的,则非唯一的RN
的所有RN
值将一起绘制freq
- 如果
不是唯一的,则绘图API无法区分一个值和另一个值RN
- 如果
将numpy导入为np
作为pd进口熊猫
将matplotlib.pyplot作为plt导入
#创建测试数据
np.random.seed(365)
数据={'freq':np.random.randint(20,size=(20,),'RN':np.random.randint(800900,size=(20,)}
df=pd.DataFrame(数据)
#将RN转换为str类型
df.RN=df.RN.aType(str)
#排序频率
df.sort_值('freq',升序=True,原地=True)
#密谋
plt.散射('RN','freq',data=df)
非唯一RN(b)
- 使用
将非唯一RNs分组在一起pandas.DataFrame.groupby
#创建测试数据
#创建测试数据
np.random.seed(365)
数据={'freq':np.random.randint(20,size=(20,),'RN':np.random.randint(800900,size=(20,)}
df=pd.DataFrame(数据)
#将RN转换为str类型
df.RN=df.RN.aType(str)
#将非唯一RN与groupby和sort by freq相结合
dfg=df.groupby('RN',as_index=False)['freq'].sum().sort_值('freq')
#密谋
plt.散射('RN','freq',data=dfg)
唯一注册护士
将numpy导入为np
作为pd进口熊猫
将matplotlib.pyplot作为plt导入
#创建测试数据
np.random.seed(365)
数据={'freq':np.random.randint(20,size=(20,),'RN':np.arange(800820)}
df=pd.DataFrame(数据)
#将RN转换为str类型
df.RN=df.RN.aType(str)
#排序频率`
df.sort_值('freq',升序=True,原地=True)
#密谋
plt.散射('RN','freq',data=df)