This is an R Notebook with Mixed Programming Languages,
SQL
Table is in mysql server, a connection has been created (in previous
chunk that is hidden)
select * from books
R
library(tidyverse)
ggplot(mydataframe) +
aes(
x = Cost,
y = Retail,
colour = Category,
group = Category
) +
geom_line(size = 0.5) +
scale_color_brewer(palette = "Set1", direction = 1) +
geom_point(shape = "circle", size = 4L) +
theme_minimal()

newdf<- mydataframe |> mutate(Profit=Retail-Cost)
Python
reticulate::repl_python()
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme(style="darkgrid")
a=sns.relplot(x="Cost", y="Profit", hue="Category", data=r.newdf)
plt.show()

LS0tDQp0aXRsZTogIk1peGVkIExhbmd1YWdlIg0Kc3VidGl0bGU6ICJieSBLdWF0cmlubnVzIFdpamF5YSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMgVGhpcyBpcyBhbiBSIE5vdGVib29rIHdpdGggTWl4ZWQgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzLA0KDQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQ0KbGlicmFyeShSTXlTUUwpDQoNCm15c3FsY29ubmVjdGlvbiA9IGRiQ29ubmVjdChSTXlTUUw6Ok15U1FMKCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJuYW1lPSdsZWUzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9MzMwNiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPSdsZWFybicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9J2xlYXJuJykNCmBgYA0KDQojIyBTUUwNClRhYmxlIGlzIGluIG15c3FsIHNlcnZlciwgYSBjb25uZWN0aW9uIGhhcyBiZWVuIGNyZWF0ZWQgKGluIHByZXZpb3VzIGNodW5rIHRoYXQgaXMgaGlkZGVuKQ0KYGBge3NxbCBjb25uZWN0aW9uPW15c3FsY29ubmVjdGlvbiAsIG91dHB1dC52YXIgPSAibXlkYXRhZnJhbWUifQ0Kc2VsZWN0ICogZnJvbSBib29rcw0KYGBgDQoNCiMjIFINCg0KYGBge3IgIGVycm9yPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpnZ3Bsb3QobXlkYXRhZnJhbWUpICsNCiAgYWVzKA0KICAgIHggPSBDb3N0LA0KICAgIHkgPSBSZXRhaWwsDQogICAgY29sb3VyID0gQ2F0ZWdvcnksDQogICAgZ3JvdXAgPSBDYXRlZ29yeQ0KICApICsNCiAgZ2VvbV9saW5lKHNpemUgPSAwLjUpICsNCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIsIGRpcmVjdGlvbiA9IDEpICsNCiAgZ2VvbV9wb2ludChzaGFwZSA9ICJjaXJjbGUiLCBzaXplID0gNEwpICsNCg0KICB0aGVtZV9taW5pbWFsKCkNCg0KbmV3ZGY8LSBteWRhdGFmcmFtZSB8PiBtdXRhdGUoUHJvZml0PVJldGFpbC1Db3N0KQ0KYGBgDQoNCiMjIFB5dGhvbg0KDQpgYGB7cHl0aG9uIGVjaG89VFJVRX0NCmltcG9ydCBtYXRwbG90bGliLnB5cGxvdCBhcyBwbHQNCmltcG9ydCBzZWFib3JuIGFzIHNucw0Kc25zLnNldF90aGVtZShzdHlsZT0iZGFya2dyaWQiKQ0KDQphPXNucy5yZWxwbG90KHg9IkNvc3QiLCB5PSJQcm9maXQiLCBodWU9IkNhdGVnb3J5IiwgZGF0YT1yLm5ld2RmKQ0KcGx0LnNob3coKQ0KDQpgYGANCg0KDQo=