具有两个 Y 轴和公共 X 轴的 Matplotlib 条形图
Matplotlib Bar Plot with two Y-Axis and Common X-Axis
我正在尝试绘制 matplotlib 条形图,其中一个 y 轴位于左侧,另一个 y 位于右侧,x 轴上有一个公共 x-axis.The 范围列。 Perc 列在左侧 y 轴上,count 列在右侧 y 轴上。请告知如何进行。
示例数据在这里 - SampleFileHere
import numpy as np
import pandas as pd
import seaborn as sbn
import matplotlib.pyplot as plt
fig = plt.figure()
ax = td['perc'].plot(kind="bar", alpha=0.7)
plt.xticks(td['ranges'].tolist())
ax2 = ax.twinx()
ax2.plot(ax.get_xticks(),td['count'],marker='o', c='navy', linewidth=4)
我收到以下错误。
<ipython-input-24-c1d398c0d012> in <module>()
7 fig = plt.figure()
8 ax = td['perc'].plot(kind="bar", alpha=0.7)
----> 9 plt.xticks(td['ranges'].tolist())
10 ax2 = ax.twinx()
11 ax2.plot(ax.get_xticks(),td['count'],marker='o', c='navy', linewidth=4)
您不能将 xticks 设置为某些非数字值。相反,您需要将 xticklabels 设置为 "range" 列中的条目。
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
counts = np.array([56000,900,5000,6000,30000,3500,300]).astype(float)
perc = counts/counts.sum()
df = pd.DataFrame({"range": list("ABCDEFG"),"count":counts, "perc":perc})
fig = plt.figure()
ax = df['perc'].plot(kind="bar", alpha=0.7)
ax2 = ax.twinx()
ax2.plot(ax.get_xticks(),df['count'],marker='o', c='navy', linewidth=4)
ax.set_xticklabels(df['range'])
ax.set_ylim(0,1.3*df["perc"].max())
ax2.set_ylim(0,1.3*df["count"].max())
ax2.grid(False)
plt.show()
我正在尝试绘制 matplotlib 条形图,其中一个 y 轴位于左侧,另一个 y 位于右侧,x 轴上有一个公共 x-axis.The 范围列。 Perc 列在左侧 y 轴上,count 列在右侧 y 轴上。请告知如何进行。
示例数据在这里 - SampleFileHere
import numpy as np
import pandas as pd
import seaborn as sbn
import matplotlib.pyplot as plt
fig = plt.figure()
ax = td['perc'].plot(kind="bar", alpha=0.7)
plt.xticks(td['ranges'].tolist())
ax2 = ax.twinx()
ax2.plot(ax.get_xticks(),td['count'],marker='o', c='navy', linewidth=4)
我收到以下错误。
<ipython-input-24-c1d398c0d012> in <module>()
7 fig = plt.figure()
8 ax = td['perc'].plot(kind="bar", alpha=0.7)
----> 9 plt.xticks(td['ranges'].tolist())
10 ax2 = ax.twinx()
11 ax2.plot(ax.get_xticks(),td['count'],marker='o', c='navy', linewidth=4)
您不能将 xticks 设置为某些非数字值。相反,您需要将 xticklabels 设置为 "range" 列中的条目。
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
counts = np.array([56000,900,5000,6000,30000,3500,300]).astype(float)
perc = counts/counts.sum()
df = pd.DataFrame({"range": list("ABCDEFG"),"count":counts, "perc":perc})
fig = plt.figure()
ax = df['perc'].plot(kind="bar", alpha=0.7)
ax2 = ax.twinx()
ax2.plot(ax.get_xticks(),df['count'],marker='o', c='navy', linewidth=4)
ax.set_xticklabels(df['range'])
ax.set_ylim(0,1.3*df["perc"].max())
ax2.set_ylim(0,1.3*df["count"].max())
ax2.grid(False)
plt.show()