Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.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 如何使用pyplot通过减小y轴的值对散点图进行排序?_Python_Matplotlib - Fatal编程技术网

Python 如何使用pyplot通过减小y轴的值对散点图进行排序?

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

我有一个数据帧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.scatter('RN','freq',data=df1)
我得到的输出x轴不是按频率的升序排序的。它是按自己的自然升序排列的,如800801,…,860

注意:
plt.bar('RN','freq',data=df1)
以我想要的正确方式工作

如何更改它?

  • 如果
    RN
    列是数字列,则绘图API将对其进行数字排序
  • 如果将
    RN
    列类型设置为
    str
    ,则可以执行此操作。
    • 如果
      RN
      中的值是唯一的,则此操作效果最佳。如果它们不是唯一的,则非唯一的
      RN
      的所有
      freq
      值将一起绘制
    • 如果
      RN
      不是唯一的,则绘图API无法区分一个值和另一个值
非唯一RN(a)
将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)
  • 使用
    pandas.DataFrame.groupby
    将非唯一RNs分组在一起
#创建测试数据
#创建测试数据
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)