Matplotlib: plot mehr Spalten in eine Figur mit unterschiedlicher y-Achse

stimmen
0

Ich möchte mit diesem eine Figur ähnlich plotten (sorry es nicht sehr gut aussieht):

Geben

mit Daten, sagen wir mal, wie folgt aus:

y = np.random.rand(10,3)
y[:,0]= np.arange(1,11)
df = pd.DataFrame(y, columns=[X, Volume, Time])
df

X   Volume  Time
0   1.0 0.517895    0.182525
1   2.0 0.488399    0.252989
2   3.0 0.992292    0.941301
3   4.0 0.147368    0.650542
4   5.0 0.236345    0.662650
5   6.0 0.913300    0.539643
6   7.0 0.373740    0.379043
7   8.0 0.752482    0.875370
8   9.0 0.040096    0.097381
9   10.0    0.793734    0.625026

Wer weiß, wie es zu tun? danke, ich versuche, in Stack-Überlauf zu graben, aber keine ähnliche Frage gefunden. Dank im Voraus für jede Idee und Anregung !!

Veröffentlicht am 07/11/2018 um 23:41
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
0

hier ist meine Lösung. Es ist ziemlich einfach, tatsächlich, nach Gebrauch ax2 = ax.twinx (), den Bereich der Y-Achse ax2 durch ax2.set_ylim Flip (BIG_NUMBER, SMALL_NUMBER)

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

y = np.random.rand(10,3)
y[:,0]= np.arange(1,11)
df = pd.DataFrame(y, columns=['x', 'v', 't'])
df['x'] = np.arange(1, 11, 1)

fig = plt.figure() # Create matplotlib figure

ax = fig.add_subplot(111) # Create matplotlib axes
ax2 = ax.twinx() # Create another axes that shares the same x-axis as ax.


ax.bar(df['x'],df['v'], color='red', alpha=0.8)
ax.set_ylabel('v', color='red')
ax.tick_params(axis='y', labelcolor='red')
ax.set_ylim(0, 1.5)

ax2.bar(df['x'], df['t'], color='blue', alpha=0.5)
ax2.set_ylabel('t', color='b')
ax2.tick_params(axis='y', labelcolor='blue')
ax2.set_ylim(1.5, 0)

plt.show()
Beantwortet am 08/11/2018 um 22:44
quelle vom benutzer

stimmen
0

Suchen Sie das?

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

y = np.random.rand(10,3)
y[:,0]= np.arange(1,11)
df = pd.DataFrame(y, columns=['x', 'v', 't'])

fig = plt.figure() # Create matplotlib figure

ax = fig.add_subplot(111) # Create matplotlib axes
ax2 = ax.twinx() # Create another axes that shares the same x-axis as ax.

width = 0.4

df.plot(x='x',y='v',kind='bar', color='red', ax=ax, width=width, position=1)
df.t.plot(x='x', y='t[::-1]',kind='bar', color='blue', ax=ax2, width=width, position=0)

ax.set_ylabel('v')
ax2.set_ylabel('t')


plt.show()
Beantwortet am 08/11/2018 um 01:28
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more