mirror of
https://github.com/langchain-ai/markdown-exec.git
synced 2026-08-27 11:11:18 -04:00
33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
# https://matplotlib.org/stable/gallery/lines_bars_and_markers/scatter_demo2.html
|
|
from io import StringIO
|
|
|
|
import matplotlib.cbook as cbook
|
|
import matplotlib.pyplot as plt
|
|
import numpy as np
|
|
|
|
# Load a numpy record array from yahoo csv data with fields date, open, close,
|
|
# volume, adj_close from the mpl-data/example directory. The record array
|
|
# stores the date as an np.datetime64 with a day unit ('D') in the date column.
|
|
price_data = cbook.get_sample_data("goog.npz")["price_data"]
|
|
price_data = price_data[-250:] # get the most recent 250 trading days
|
|
|
|
delta1 = np.diff(price_data["adj_close"]) / price_data["adj_close"][:-1]
|
|
|
|
# Marker size in units of points^2
|
|
volume = (15 * price_data["volume"][:-2] / price_data["volume"][0])**2
|
|
close = 0.003 * price_data["close"][:-2] / 0.003 * price_data["open"][:-2]
|
|
|
|
fig, ax = plt.subplots()
|
|
ax.scatter(delta1[:-1], delta1[1:], c=close, s=volume, alpha=0.5)
|
|
|
|
ax.set_xlabel(r"$\Delta_i$", fontsize=15)
|
|
ax.set_ylabel(r"$\Delta_{i+1}$", fontsize=15)
|
|
ax.set_title("Volume and percent change")
|
|
|
|
ax.grid(True)
|
|
fig.tight_layout()
|
|
|
|
buffer = StringIO()
|
|
plt.savefig(buffer, format="svg")
|
|
print(buffer.getvalue())
|