我得到 barplot ,但没有得到 scatterplot
I am getting barplot , but not getting scatterplot
我在 python 2.7,使用 spyder IDE,这是我的数据:
Duration ptno
7432.0 X35133502100
7432.0 X35133502100
35255.0 T7956000304
35255.0 T7956000304
17502.0 T7956000304
17502.0 T7956000304
46.0 T7956000304
46.0 T7956000304
代码:
import time
import pandas as pd
import matplotlib.pyplot as plt
df1 = pd.read_csv('Nissin_11.09.2018.csv')
bx = df1.plot.bar(x='ptno', y='d', rot=0)
plt.setp(bx.get_xticklabels(),rotation=30,horizontalalignment='right')
plt.show()
对于列 Duration
和 ptno
中提到的每个值,我都得到了一个漂亮的条形图。作为参考,我附上了情节的图像文件。
但是当我尝试使用以下方法获得 scatter
绘图时:
df1.plot.scatter(x='ptno', y='d')
它抛出一个错误:
ValueError: scatter requires x column to be numeric
如何为我的数据绘制 'scatter' 图??
根据@Hristo Iliev 的建议,我使用了他的代码:
import seaborn as sns
_ = sns.stripplot(x='ptno', y='d', data=df1)
但它只在轴上绘制两个唯一值,我希望所有值都在 x 轴上,因为我的条形图具有 x 轴值。
您不能使用错误指示的非数字值制作散点图。在散点图中,每个点的位置由每个变量的值在实轴上的位置确定。 T7956000304
等分类值或字符串值没有直接映射到实轴上的位置。
虽然您可以绘制一系列带状图,每个带状图对应 ptno
的每个唯一值。使用 Seaborn 最容易做到这一点:
import seaborn as sns
_ = sns.stripplot(x='ptno', y='d', data=df1)
一种选择是使用纯 matplotlib。您需要创建一个数字数组以用作 x 轴,即 [1,2,3,4,5,...]
,然后将刻度标签更改为列 ptno
的值。
例如:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df1 = pd.DataFrame({"Duration":[7432,7432,35255,35255,17502,17502,46,46],
"ptno":["X35", "X35", "T79", "T79", "T79", "T79", "T79", "T79"]})
dummy_x = np.arange(len(df1.ptno))
plt.scatter(dummy_x, df1.Duration)
plt.xticks(dummy_x, df1.ptno)
plt.show()
我在 python 2.7,使用 spyder IDE,这是我的数据:
Duration ptno
7432.0 X35133502100
7432.0 X35133502100
35255.0 T7956000304
35255.0 T7956000304
17502.0 T7956000304
17502.0 T7956000304
46.0 T7956000304
46.0 T7956000304
代码:
import time
import pandas as pd
import matplotlib.pyplot as plt
df1 = pd.read_csv('Nissin_11.09.2018.csv')
bx = df1.plot.bar(x='ptno', y='d', rot=0)
plt.setp(bx.get_xticklabels(),rotation=30,horizontalalignment='right')
plt.show()
对于列 Duration
和 ptno
中提到的每个值,我都得到了一个漂亮的条形图。作为参考,我附上了情节的图像文件。
但是当我尝试使用以下方法获得 scatter
绘图时:
df1.plot.scatter(x='ptno', y='d')
它抛出一个错误:
ValueError: scatter requires x column to be numeric
如何为我的数据绘制 'scatter' 图??
根据@Hristo Iliev 的建议,我使用了他的代码:
import seaborn as sns
_ = sns.stripplot(x='ptno', y='d', data=df1)
但它只在轴上绘制两个唯一值,我希望所有值都在 x 轴上,因为我的条形图具有 x 轴值。
您不能使用错误指示的非数字值制作散点图。在散点图中,每个点的位置由每个变量的值在实轴上的位置确定。 T7956000304
等分类值或字符串值没有直接映射到实轴上的位置。
虽然您可以绘制一系列带状图,每个带状图对应 ptno
的每个唯一值。使用 Seaborn 最容易做到这一点:
import seaborn as sns
_ = sns.stripplot(x='ptno', y='d', data=df1)
一种选择是使用纯 matplotlib。您需要创建一个数字数组以用作 x 轴,即 [1,2,3,4,5,...]
,然后将刻度标签更改为列 ptno
的值。
例如:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df1 = pd.DataFrame({"Duration":[7432,7432,35255,35255,17502,17502,46,46],
"ptno":["X35", "X35", "T79", "T79", "T79", "T79", "T79", "T79"]})
dummy_x = np.arange(len(df1.ptno))
plt.scatter(dummy_x, df1.Duration)
plt.xticks(dummy_x, df1.ptno)
plt.show()