2016-09-13 4 views
2

次の例は、エラーを返します。 Pythonでggplotのx軸に離散型(連続ではない)スケールを使用することはサポートされていません。Python用のggplotでは、geom_point()で離散Xスケールを使用していますか?

import pandas as pd 
import ggplot 

df = pd.DataFrame.from_dict({'a':['a','b','c'], 
        'percentage':[.1,.2,.3]}) 

p = ggplot.ggplot(data=df, 
        aesthetics=ggplot.aes(x='a', 
             y='percentage'))\ 
    + ggplot.geom_point() 

print(p) 

述べたように、これが返されます。

Traceback (most recent call last): 
    File "/Users/me/Library/Preferences/PyCharm2016.1/scratches/scratch_1.py", line 30, in <module> 
    print(p) 
    File "/Users/me/lib/python3.5/site-packages/ggplot/ggplot.py", line 116, in __repr__ 
    self.make() 
    File "/Users/me/lib/python3.5/site-packages/ggplot/ggplot.py", line 627, in make 
    layer.plot(ax, facetgroup, self._aes, **kwargs) 
    File "/Users/me/lib/python3.5/site-packages/ggplot/geoms/geom_point.py", line 60, in plot 
    ax.scatter(x, y, **params) 
    File "/Users/me/lib/python3.5/site-packages/matplotlib/__init__.py", line 1819, in inner 
    return func(ax, *args, **kwargs) 
    File "/Users/me/lib/python3.5/site-packages/matplotlib/axes/_axes.py", line 3838, in scatter 
    x, y, s, c = cbook.delete_masked_points(x, y, s, c) 
    File "/Users/me/lib/python3.5/site-packages/matplotlib/cbook.py", line 1848, in delete_masked_points 
    raise ValueError("First argument must be a sequence") 
ValueError: First argument must be a sequence 

離散規模で飛散してggplotを使用するための回避策を?

答えて

1

1つのオプションは、連続する系列を生成し、元の変数をラベルとして使用することです。しかし、これは厄介な回避策のようです。

df = pd.DataFrame.from_dict({'a':[0,1,2], 
        'a_name':['a','b','c'], 
        'percentage':[.1,.2,.3]}) 

p = ggplot.ggplot(data=df, 
        aesthetics=ggplot.aes(x='a', 
             y='percentage'))\ 
    + ggplot.geom_point()\ 
    + ggplot.scale_x_continuous(breaks=list(df['a']), 
           labels=list(df['a_name'])) 
0

データフレームの2つの列をプロットしようとしたときに同じエラーが発生しました。私はCSVファイルからデータを読み込み、それをデータフレームに変換していました。

readdata=csv.reader(open(filename),delimiter="\t") 
df= pd.DataFrame(data, columns=header) 
df.columns=["pulseVoltage","dutVoltage","dutCurrent","leakageCurrent"] 
print (df.dtypes) 

私は(私は初心者です、これは私にはわからない些細な知識かもしれない)と予想彼らはオブジェクトの代わりに、floatとして示されたいくつかの理由で、データ型を確認しました。したがって、私は先に進んで、列をデータ型floatに明示的に変換しました。

df["dutVoltage"]=df["dutVoltage"].astype("float") 
df["dutCurrent"]=df["dutCurrent"].astype("float") 

これで、ggplotを使用してエラーなしでデータをプロットすることができます。

print ggplot(df, aes('dutVoltage','dutCurrent'))+ \ 
geom_point() 
関連する問題