Matplotlib not showing xlabel in top two subplots

2024/9/19 9:39:55

I have a function that I've written to show a few graphs here:

def plot_price_series(df, ts1, ts2):# price series line graphfig = plt.figure()ax1 = fig.add_subplot(221)ax1.plot(df.index, df[ts1], label=ts1)ax1.plot(df.index, df[ts2], label=ts2)ax1.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y'))ax1.set_xlim(df.index[0], df.index[-1])ax1.grid(True)fig.autofmt_xdate()ax1.set_xlabel('Month/Year')ax1.set_ylabel('Price')ax1.set_title('%s and %s Weekly Prices' % (ts1, ts2))plt.legend()# Spreadax2 = fig.add_subplot(222)ax2.plot(df.index, df[ts2] - df[ts1], label=ts2 + " vs " + ts1 + " spread")ax2.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y'))ax2.set_xlim(df.index[0], df.index[-1])ax2.grid(True)fig.autofmt_xdate()ax2.set_xlabel('Month/Year')ax2.set_ylabel('Spread')ax2.set_title('%s and %s Weekly Spread' % (ts1, ts2))# Scatter w/ line of least squareax3 = fig.add_subplot(223)m, b = np.polyfit(df[ts1], df[ts2], 1)ax3.plot(df[ts1], m * df[ts1] + b, '-k')ax3.scatter(df[ts1], df[ts2])ax3.grid(True)ax3.set_xlabel(ts1)ax3.set_ylabel(ts2)ax3.set_title('%s and %s Scatter Plot' % (ts1, ts2))ax4 = fig.add_subplot(224)corr = pd.rolling_corr(df[ts1], df[ts2], window=10)ax4.plot(df.index, corr)ax4.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y'))ax4.set_xlim(df.index[0], df.index[-1])ax4.grid(True)fig.autofmt_xdate()ax4.set_xlabel('Month/Year')ax4.set_ylabel('Price ($)')ax4.set_title('Rolling 10-week Correlation')plt.show()

However, when I run this function with valid data, the xlabel for both of the top two graphs, ax1 and ax2 does not show up, nor do any of the date values that I need to be showing. The graph is below:

Current Subplots

Any ideas on how I can fix this so that I can see the xlabels and x-axis values? I tried what many other answers suggested with figure.tight_layout() to no avail.

Answer

I think the problem is with fig.autofmt_xdate(). Your date x-axis are all the same across different sub figures, and fig.autofmt_xdate() tends to use a sharex format so that the date x-axis does show up in only one sub figure.

https://en.xdnf.cn/q/72864.html

Related Q&A

SQLAlchemy NOT exists on subselect?

Im trying to replicate this raw sql into proper sqlalchemy implementation but after a lot of tries I cant find a proper way to do it:SELECT * FROM images i WHERE NOT EXISTS (SELECT image_idFROM events …

What is the correct way to obtain explanations for predictions using Shap?

Im new to using shap, so Im still trying to get my head around it. Basically, I have a simple sklearn.ensemble.RandomForestClassifier fit using model.fit(X_train,y_train), and so on. After training, Id…

value error when using numpy.savetxt

I want to save each numpy array (A,B, and C) as column in a text file, delimited by space:import numpy as npA = np.array([5,7,8912,44])B = np.array([5.7,7.45,8912.43,44.99])C = np.array([15.7,17.45,189…

How do I retrieve key from value in django choices field?

The sample code is below:REFUND_STATUS = ((S, SUCCESS),(F, FAIL) ) refund_status = models.CharField(max_length=3, choices=REFUND_STATUS)I know in the model I can retrieve the SUCCESS with method get_re…

Errno13, Permission denied when trying to read file

I have created a small python script. With that I am trying to read a txt file but my access is denied resolving to an no.13 error, here is my code:import time import osdestPath = C:\Users\PC\Desktop\N…

How to write large JSON data?

I have been trying to write large amount (>800mb) of data to JSON file; I did some fair amount of trial and error to get this code:def write_to_cube(data):with open(test.json) as file1:temp_data = j…

Using absolute_import and handling relative module name conflicts in python [duplicate]

This question already has answers here:How can I import from the standard library, when my project has a module with the same name? (How can I control where Python looks for modules?)(7 answers)Close…

Setting results of torch.gather(...) calls

I have a 2D pytorch tensor of shape n by m. I want to index the second dimension using a list of indices (which could be done with torch.gather) then then also set new values to the result of the index…

Why does PyCharm use double backslash to indicate escaping?

For instance, I write a normal string and another "abnormal" string like this:Now I debug it, finding that in the debug tool, the "abnormal" string will be shown like this:Heres the…

Execute Shell Script from Python with multiple pipes

I want to execute the following Shell Command in a python script:dom=myserver cat /etc/xen/$myserver.cfg | grep limited | cut -d= -f2 | tr -d \"I have this:dom = myserverlimit = subprocess.cal…