def plot_reaction_rate_burning_rate(df_rate): fig, ax = pplot.subplots(aspect=(4, 3), axwidth=4) c1 = pplot.scale_luminance('cerulean', 0.5) c2 = pplot.scale_luminance('red', 0.5) df_rate.sort_values(by="time", inplace=True) lns1 = ax.plot(df_rate["time"], df_rate["vol_averaged_reaction_rate"], color=c1, label="Reaction rate") max_rate = df_rate["vol_averaged_reaction_rate"].max() ax.format(xlabel="Time (s)", ylabel="Volume-Averaged coke reaction rate (kg/m$^3$/s)", ycolor=c1, ylim=(-1, max_rate * 1.1)) ax2 = ax.twinx() lns2 = ax2.plot(df_rate["time"], df_rate["burning_fraction"] * 100, color=c2, linestyle="--", label="Conversion") ax2.format(xlabel="Time (s)", ylabel="Conversion (%)", ycolor=c2, ylim=(-1, 100)) lns = lns1 + lns2 labs = [l.get_label() for l in lns] ax.legend(lns, labs, loc="upper right", fancybox=True) return ax, ax2, fig
def plot_transverse_averages(transverse_data_folder, time): df_transverse = pd.read_csv( os.path.join(transverse_data_folder, f"{time}.csv")) fig, ax = plt.subplots() c1 = pplot.scale_luminance('cerulean', 0.5) c2 = pplot.scale_luminance('red', 0.5) ax.plot(df_transverse["x"], df_transverse["O2Conc"], color=c1) ax.set_xlabel("X (m)") ax.set_ylabel("Tranversely Averaged O$_2$ mole concentration (mol/m$^3$)", color=c1) ax.tick_params(axis='y', colors=c1) ax2 = ax.twinx() ax2.plot(df_transverse["x"], df_transverse["T"], color=c2) ax2.set_ylabel("Tranversely Averaged Temperature (K)", color=c2) ax2.tick_params(axis='y', colors=c2) fig.tight_layout() return ax, ax2, fig
# like `~matplotlib.axes.Axes.set_xticks` and # `~matplotlib.axes.Axes.set_yticks`). See # `~proplot.axes.CartesianAxes.format` and `~proplot.constructor.Locator` for # details. # # To generate lists of tick locations, we recommend using ProPlot's # `~proplot.utils.arange` function -- it’s basically an *endpoint-inclusive* # version of `numpy.arange`, which is usually what you'll want in this # context. # %% import proplot as plot import numpy as np state = np.random.RandomState(51423) plot.rc.update( facecolor=plot.scale_luminance('powderblue', 1.15), linewidth=1, fontsize=10, color='dark blue', suptitlecolor='dark blue', titleloc='upper center', titlecolor='dark blue', titleborder=False, ) fig, axs = plot.subplots(nrows=8, axwidth=5, aspect=(8, 1), share=0) axs.format(suptitle='Tick locators demo') # Step size for tick locations axs[0].format( xlim=(0, 200), xminorlocator=10, xlocator=30, title='MultipleLocator' ) # Specific list of locations axs[1].format(
def plot_O2_flux_reaction_rate(df_O2_flux_at_inlet, df_rate, pixelResolution, sampling_rate=5, ylim=(1e-9, 1e-4), ls=13, ts=11): MCoke = 12 MO2 = 32 df_O2_flux_at_inlet["diffusive_flux"] = np.array( df_O2_flux_at_inlet["O2_diffusive_Fluxs"]) df_O2_flux_at_inlet["advective_flux"] = np.array( df_O2_flux_at_inlet["O2_adv_flux_by_deltaX"]) * pixelResolution df_O2_flux_at_inlet["total_flux"] = df_O2_flux_at_inlet[ "diffusive_flux"] + df_O2_flux_at_inlet["advective_flux"] df_O2_flux_at_inlet["diffusion flux"] = df_O2_flux_at_inlet[ "diffusive_flux"] / df_O2_flux_at_inlet["total_flux"] df_O2_flux_at_inlet["advection flux"] = df_O2_flux_at_inlet[ "advective_flux"] / df_O2_flux_at_inlet["total_flux"] c1 = pplot.scale_luminance('cerulean', 0.5) c2 = pplot.scale_luminance('red', 0.5) fig, axs = pplot.subplots(ncols=1, nrows=2, aspect=(4, 3), \ axwidth=4,hspace=(0),sharey=0,sharex=3) ax1 = axs[0] ax1.plot(df_O2_flux_at_inlet["time"], df_O2_flux_at_inlet["diffusive_flux"], color=c1, label="Diffusion Flux", linestyle="-.") ax1.plot(df_O2_flux_at_inlet["time"], df_O2_flux_at_inlet["advective_flux"], color=c1, label="Advection Flux", linestyle="--") ax1.plot(df_O2_flux_at_inlet["time"], df_O2_flux_at_inlet["total_flux"], color=c1, label="Total Flux", linestyle="-") ax1.format(xlabel="Time (s)", ylim=ylim, yformatter='sci', yscale='log', ylabel="O$_2$ flux at inlet (kg/s)", ycolor=c1) ax1.legend(loc="best", ncols=1, fancybox=True) ax2 = ax1.twinx() df_sampling = df_rate[df_rate.index % sampling_rate == 0] ax2.scatter(df_sampling["time"], df_sampling["total_reaction_rate"] / MCoke * MO2 * pixelResolution * pixelResolution, label="Total O$_2$ Reaction Rate", color=c2) ax2.format(xlabel="Time (s)", ylim=ylim, yformatter='sci', yscale='log', ylabel='O$_2$ reaction rate within domain (kg/s)', ycolor=c2) df_sampling = df_O2_flux_at_inlet[df_O2_flux_at_inlet.index % sampling_rate == 0] df_sampling.reset_index(drop=True, inplace=True) df_ratios = df_sampling[["diffusion flux", "advection flux"]] ax3 = axs[1] ax3.format(ylim=(0, 1.1)) ax3.set_ylabel(ylabel="Percentage of different O$_2$ fluxes", labelpad=20) num = df_sampling.shape[0] maxTime = df_sampling["time"].iloc[-1] ax3.bar(df_sampling["time"], df_ratios, stacked=True, cycle='Blues', legend='ur', edgecolor='blue9', width=maxTime / (num * 1.2)) axs = [ax1, ax2, ax3] for ax in axs: ax.tick_params(labelsize=ts) ax.yaxis.label.set_size(ls) ax3.xaxis.label.set_size(ls) # ax3.yaxis.label.set_labelpad(10) return ax1, ax2, fig
import proplot as pplot # there are some nice colormaps in the proplot package import concurrent.futures import argparse import json import math import traceback import tracemalloc # mpl.rcParams['font.family'] = 'Helvetica', #default font family mpl.rcParams['mathtext.fontset'] = 'cm' #font for math C_GREEN = fg('green') C_RED = fg('red') C_BLUE = fg('blue') C_DEFAULT = attr('reset') c1 = pplot.scale_luminance('cerulean', 0.5) c2 = pplot.scale_luminance('red', 0.5) def use_paper_style(mpl, fontsize=9): mpl.rcParams['axes.titlesize'] = fontsize mpl.rcParams['axes.labelsize'] = fontsize mpl.rcParams['xtick.labelsize'] = fontsize mpl.rcParams['ytick.labelsize'] = fontsize mpl.rcParams['legend.fontsize'] = fontsize mpl.rcParams['axes.titlesize'] = fontsize mpl.rcParams['axes.titlesize'] = fontsize def read_postProcess_csv_data(postProcessDir, timeName): fileName = f"{timeName}.csv"
x = state.normal(size=(N, )) y = state.normal(size=(N, )) bins = pplt.arange(-3, 3, 0.25) # Histogram with marginal distributions fig, axs = pplt.subplots(ncols=2, refwidth=2.3) axs.format(abc='A.', abcloc='l', titleabove=True, ylabel='y axis', suptitle='Histograms with marginal distributions') colors = ('indigo9', 'red9') titles = ('Group 1', 'Group 2') for ax, which, color, title in zip(axs, 'lr', colors, titles): ax.hist2d(x, y, bins, vmin=0, vmax=10, levels=50, cmap=color, colorbar='b', colorbar_kw={'label': 'count'}) color = pplt.scale_luminance(color, 1.5) # histogram colors px = ax.panel(which, space=0) px.histh(y, bins, color=color, fill=True, ec='k') px.format(grid=False, xlocator=[], xreverse=(which == 'l')) px = ax.panel('t', space=0) px.hist(x, bins, color=color, fill=True, ec='k') px.format(grid=False, ylocator=[], title=title, titleloc='l')
yformatter='none', ) # Shifted hue N = 50 fmt = pplt.SimpleFormatter() marker = 'o' for shift in (0, -60, 60): x, y = state.rand(2, N) color = pplt.shift_hue('grass', shift) axs[0].scatter(x, y, marker=marker, c=color, legend='b', label=fmt(shift)) # Scaled luminance for scale in (0.2, 1, 2): x, y = state.rand(2, N) color = pplt.scale_luminance('bright red', scale) axs[1].scatter(x, y, marker=marker, c=color, legend='b', label=fmt(scale)) # Scaled saturation for scale in (0, 1, 3): x, y = state.rand(2, N) color = pplt.scale_saturation('ocean blue', scale) axs[2].scatter(x, y, marker=marker, c=color, legend='b', label=fmt(scale)) # %% [raw] raw_mimetype="text/restructuredtext" # .. _ug_colors_cmaps: # # Colors from colormaps # --------------------- # # If you want to draw an individual color from a colormap or a color cycle,