Matplotlib: Spiknutí více sloupců do postavy s různými y osách

hlasů
0

Chci vykreslit postavu podobnou s tímto (líto, že to nevypadá moc dobře):

zadejte

s údaji, řekněme, například takto:

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

Ví někdo, jak to udělat? díky, snažím kopat v přetečení zásobníku, ale nenašli žádnou podobnou otázku. Díky předem za jakékoliv představy a návrh !!

Položena 07/11/2018 v 23:41
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

tady je moje řešení. To je velmi jednoduchý a ve skutečnosti, po použití AX2 = ax.twinx (), flip rozsah osy AX2 y podle ax2.set_ylim (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()
Odpovězeno 08/11/2018 v 22:44
zdroj uživatelem

hlasů
0

Hledáte toto?

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()
Odpovězeno 08/11/2018 v 01:28
zdroj uživatelem

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