# first, some imports:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
假设我想使用这些数据绘制散点图:
np.random.seed(42)
x=np.arange(0,50)
y=np.random.normal(loc=3000,scale=1,size=50)
绘图通过:
plt.scatter(x,y)
我得到这个答案:
好的,让我们先创建一个数据框:
df=pd.DataFrame.from_dict({'x':x,'y':y.astype(str)})
(我知道我将 y
存储为 str
- 这是一个可重现的示例,我这样做是为了反射(reflect)真实的用例。)
然后,如果我这样做:
plt.scatter(df.x,df.y)
我得到:
我在第二个图中看到了什么?我认为第二个图必须显示 x
列与 y
列的对比, 转换为 float 。这显然不是这种情况。
最佳答案
Matplotlib 不会自动将 str
值转换为数值,因此您的 y
值被视为分类值。就 Matplotlib 而言,'1.0' 到 '0.9' 和 '1.0' 到 '100.0' 的差异没有区别。
因此,图上的 y 轴将与 range(len(y))
相同(因为所有分类值之间的差异是相同的),并从分类值分配标签.
由于您的 x
是一个等于 range(50)
的范围,现在您的 y
也是一个范围(也等于 range(50)
),它绘制 x = y
,y 标签设置为相应的 str
值。
https://stackoverflow.com/questions/68873370/
相关文章:
python - Pandas:如何使用 json 数组分解数据框
awk - 使用 sed(或 awk 或 tr)将换行符\n 替换为表达式
amazon-web-services - AWS - 安全组是否足够或是否需要私有(private
algorithm - 给出了随机顺序的一串数字,你必须以十进制格式严格降序打印它们
ios - RNFIREBASE MESSENGER 不适用于 iOS,但适用于 Android
reactjs - React useEffect 钩子(Hook)没有清除间隔
java - 如何将带逗号的字符串转换为整数和 double