私は単にseabornを使用して破線をプロットしようとしています。これは私が使用しているコードと私が得ている出力です
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
n = 11
x = np.linspace(0,2,n)
y = np.sin(2*np.pi*x)
sns.lineplot(x,y, linestyle='--')
plt.show()
何が悪いのですか?ありがとう
_linestyle=
_引数はlineplot()
では機能しないようで、引数_dashes=
_は見た目よりも少し複雑です。
(比較的)簡単な方法は、_ax.lines
_を使用してプロット上のLine2Dオブジェクトのリストを取得し、手動で線スタイルを設定することです。
_import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
n = 11
x = np.linspace(0,2,n)
y = np.sin(2*np.pi*x)
ax = sns.lineplot(x,y)
# Might need to loop through the list if there are multiple lines on the plot
ax.lines[0].set_linestyle("--")
plt.show()
_
更新:
dashes
引数は、複数の線をプロットするときにのみ適用されるようです(通常、pandas dataframeを使用)。ダッシュは、(セグメント、ギャップ)のタプルであるmatplotlibと同じように指定されますしたがって、タプルのリストを渡す必要があります。
_n = 100
x = np.linspace(0,4,n)
y1 = np.sin(2*np.pi*x)
y2 = np.cos(2*np.pi*x)
df = pd.DataFrame(np.c_[y1, y2]) # modified @Elliots dataframe production
ax = sns.lineplot(data=df, dashes=[(2, 2), (2, 2)])
plt.show()
_
実際、lineplot
を間違った方法で使用しています。 matplotlib
のplot
関数には、seaborn
のどの関数よりも単純化されたケースの方が適しています。 seaborn
は、スクリプトへの直接的な介入を少なくしてプロットを読みやすくするためのものであり、pandas
データフレームを処理するときに一般的に最も距離が長くなります
例えば
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
n = 100
x = np.linspace(0,2,n)
y1 = np.sin(2*np.pi*x)
y2 = np.sin(4*np.pi*x)
y3 = np.sin(6*np.pi*x)
df = pd.DataFrame(np.c_[y1, y2, y3], index=x)
ax = sns.lineplot(data=df)
plt.show()
収量
表示しようとしている変数のスタイルをどのように設定するかについては、処理方法がわかりません。