题:
使用此数据和以下代码创建一个绘图,该绘图显示nlargest
列中'# of Trades'
值的水平线。
我们如何将这些nlargest
值显示为点(散点图是否正确?),该点位于观察到nlargest
值的区域而不是水平线?
数据:
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
df = pd.read_csv('for_stack_nums.csv')
axnum = df[['High','Low']].plot()
axnum.yaxis.set_major_formatter(ticker.FormatStrFormatter('%.2f'))
for idx, l in df.nlargest(5, '# of Trades').iterrows():
plt.axhline(y=l['High'], color='r')
plt.axhline(y=l['Low'], color='b')
plt.show()
所需的输出:
该图显示了现有的
df[['High','Low']].plot()
,但水平线已由点代替,并且y轴值以.05(而不是目前的.2)的步长递增。如果点的大小可以相对于最大值等级,那将是很好的。因此,最大的价值就是最大的点。
最佳答案
根据评论修改答案
axnum = df[['High','Low']].plot()
axnum.yaxis.set_major_formatter(ticker.FormatStrFormatter('%.2f'))
axnum.yaxis.set_major_locator(ticker.MultipleLocator(.05))
data = df.nlargest(5, '# of Trades')[['High', 'Low']]
plt.scatter(data.index, data.High, color='r', s=np.linspace(50, 10, 5))
plt.scatter(data.index, data.Low, color='b', s=np.linspace(50, 10, 5))
您需要创建一个散点图。这是一些简单的代码,可以帮您完成。
import matplotlib.ticker as ticker
axnum = df[['High','Low']].plot()
axnum.yaxis.set_major_formatter(ticker.FormatStrFormatter('%.2f'))
axnum.yaxis.set_major_locator(ticker.MultipleLocator(.05))
x = np.linspace(0, len(df), 10)
for i, (idx, l) in enumerate(df.nlargest(5, '# of Trades').iterrows()):
plt.scatter(x, y=[l['High']]*len(x), color='r', marker='o', s=(5-i) * 5 + 5)
plt.scatter(x, y=[l['Low']]*len(x), color='b', marker='o', s=(5-i) * 5 + 5)
关于python - 使用点而不是水平线和更细的y轴值修改图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41452231/