2

次のコード スニペットでは:

import numpy as np
import pandas as pd
import pandas.rpy.common as com
import matplotlib.pyplot as plt
mtcars = com.load_data("mtcars")
df = mtcars.groupby(["cyl"]).apply(lambda x: pd.Series([x["cyl"].count(), np.mean(x["wt"])], index=["n", "wt"])).reset_index()
plt.plot(df["n"], range(len(df["cyl"])), "o")
plt.yticks(range(len(df["cyl"])), df["cyl"])
plt.show()

このコードはドット プロット グラフを出力しますが、xticks と yticks の両方に十分なスペースがないため、結果は非常にひどいものに見えます。グラフで両方と変数出力の値に気付くのは非常に困難4です。8cyl

では、R/ggplot2 で手間をかけずにできるように、事前に十分なスペースを確保してプロットするにはどうすればよいでしょうか?

参考までに、私の場合、このコードこれの両方が機能しません。誰も理由を知っていますか?そして、そもそもそのようなサブプロットを作成する必要がありますか? 入力値に応じて目盛りを自動的に調整することはできませんか?

4

1 に答える 1

3

何を聞かれているのかよくわかりません...

目盛りが自動的に配置されない理由を尋ねていますか、それともプロットの内側の端に「パディング」を追加する方法を尋ねていますか?

前者の場合は、 で目盛りの位置を手動で設定したためですyticks。これは、自動目盛りロケーターをオーバーライドします。

後者の場合は、ax.margins(some_percentage)(some_percentage が 0 から 1 の間、たとえば0.055% の場合) を使用して、自動スケーリングされる前にデータ制限に「パディング」を追加します。

後者の例として、デフォルトでは、点がプロットの境界に位置するようにデータ制限を自動スケーリングできます。例えば:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(10), 'ro')
plt.show()

ここに画像の説明を入力

これを回避したい場合は、ax.margins(または同等のplt.margins) を使用して、自動スケーリングが行われる前にデータ制限に追加されるパディングのパーセンテージを指定します。

例えば

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(10), 'ro')
ax.margins(0.04) # 4% padding, similar to R.
plt.show()

ここに画像の説明を入力

于 2013-11-13T16:26:30.197 に答える