3 ms·
import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdates import seaborn as sn df = (pd.read_csv("/tmp/overview_202
by _dain_ 5y ago
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import seaborn as sn
df = (pd.read_csv("/tmp/overview_2022-03-21.csv") # i just used curl beforehand
.assign(date=lambda x: pd.to_datetime(x["date"]))
.set_index("date")
.melt(value_vars=[
"newCasesBySpecimenDate",
"covidOccupiedMVBeds",
"newAdmissions",
"newDeaths28DaysByDeathDate"],
var_name="Data", ignore_index=False)
.assign(Data=lambda x: x["Data"].replace({
"newCasesBySpecimenDate": "New Cases",
"newAdmissions": "Admissions",
"newDeaths28DaysByDeathDate": "Deaths",
"covidOccupiedMVBeds": "Ventilated"
}))
)
ax = sn.scatterplot(data=df, x=df.index, y=df["value"], hue="Data")
ax.set(xlabel="Date", ylabel="Daily rate", yscale="log")
ax.xaxis.set_major_formatter(mdates.DateFormatter("%b"))
plt.show()
I spend 2 minutes on the pandas part and 20 minutes on the plotting part, which really says it all. Seaborn's support for smoothing is really bad and doesn't play nicely with datetimes for some reason, so if I wanted smoothing I'd need to do it myself. And the other stuff I left out requires going into matplotlib's documentation which I don't want to spend time on.
pandas is as good or better than R's dataframe manipulation, but R's plotting tools are best in class. I hate all the python plotting libraries.
- nuclearnice1 5y agoThis is great. You don't need the curl -- read_csv works with URLs directly. The lambda can be replaced by passing parse_dates=[“date”]
- _dain_ 5y agoThanks
- LosWochosWeek 5y ago> I hate all the python plotting libraries. I've given up discussing this. My personal opinion is that MPL is the assembly vs ggplots2's Python. Yes, maybe there are some things that are doable in MPL but not in ggplot2, but never (and I mean - never -) has any one of my colleagues found a single example that I couldnt recreate in ggplot2 with a more readable code that resulted in a better looking plot. MPL has this Latex like "once you get the hang of it, you will never use anything else in life for anything" and OOP's "If its good code then it is OOP and if its not, then you're not doing correct OOP" mythisque hanging over it. When confronted with bad MPL code that results in bad plots, its always one of those two. ggplot2 is the best plotting package out there and imo one of the best "end-user" packages in any language. Also, Hadley is a saint.
- benchgoblin 5y agoCheck out plotnine. Really good clone of ggplot for python. https://plotnine.readthedocs.io/en/stable/ https://plotnine.readthedocs.io/en/stable/
- dm319 5y agoThanks for providing that. Interesting to see the '.' used like a pipe. Always thought of it used in an OOP context, but interesting that it can be functional too. I also had difficulty fitting a LOESS curve to the plot, but I could do a linear model. The LOESS would have been possible doing it manually I guess.