import numpy as np import pandas as pd import altair as alt # Generate random data np.random.seed(0) x = np.random.normal(0, 1, 100) y = np.random.normal(0, 1, 100) # Calculate log fold change and p-values log_fold_change = np.log2(x / y) p_values = -np.log10(np.random.uniform(0, 1, 100)) # Create DataFrame data = pd.DataFrame({'Log Fold Change': log_fold_change, '-log10(p-value)': p_values}) # Create Altair chart chart = alt.Chart(data).mark_circle().encode( x='Log Fold Change', y='-log10(p-value)', tooltip=['Log Fold Change', '-log10(p-value)'] ).properties( title='Volcano Plot', width=500, height=400 ) # Show the chart with hover interaction chart.interactive().show()