Surprised to see no one mentioned more capable, interactive and easier to use alternatives.
A] You can use plotly:
Just two lines and you get:
interactivity,
smooth scale,
colors based on whole dataframe instead of individual columns,
column names & row indices on axes,
zooming in,
panning,
built-in one-click ability to save it as a PNG format,
auto-scaling,
comparison on hovering,
bubbles showing values so heatmap still looks good and you can see values wherever you want:
import plotly.express as px
fig = px.imshow[df.corr[]]
fig.show[]
B] You can also use Bokeh:
All the same functionality with a tad much hassle. But still worth it if you do not want to opt-in for plotly and still want all these things:
from bokeh.plotting import figure, show, output_notebook
from bokeh.models import ColumnDataSource, LinearColorMapper
from bokeh.transform import transform
output_notebook[]
colors = ['#d7191c', '#fdae61', '#ffffbf', '#a6d96a', '#1a9641']
TOOLS = "hover,save,pan,box_zoom,reset,wheel_zoom"
data = df.corr[].stack[].rename["value"].reset_index[]
p = figure[x_range=list[df.columns], y_range=list[df.index], tools=TOOLS, toolbar_location='below',
tooltips=[['Row, Column', '@level_0 x @level_1'], ['value', '@value']], height = 500, width = 500]
p.rect[x="level_1", y="level_0", width=1, height=1,
source=data,
fill_color={'field': 'value', 'transform': LinearColorMapper[palette=colors, low=data.value.min[], high=data.value.max[]]},
line_color=None]
color_bar = ColorBar[color_mapper=LinearColorMapper[palette=colors, low=data.value.min[], high=data.value.max[]], major_label_text_font_size="7px",
ticker=BasicTicker[desired_num_ticks=len[colors]],
formatter=PrintfTickFormatter[format="%f"],
label_standoff=6, border_line_color=None, location=[0, 0]]
p.add_layout[color_bar, 'right']
show[p]
Correlation means an association, It is a measure of the extent to which two variables are related.
1. Positive Correlation: When two variables increase together and decrease together. They are positively correlated. ‘1’ is a perfect positive correlation. For example – demand and profit are positively correlated the more the demand for the product, the more profit hence positive correlation.
2. Negative Correlation: When one variable increases and the other variable decreases together and vice-versa. They are negatively correlated. For example, If the distance between magnet increases their attraction decreases, and vice-versa. Hence, a negative correlation. ‘-1’ is no correlation
3. Zero Correlation[ No Correlation]: When two variables don’t seem to be linked at all. ‘0’ is a perfect negative correlation. For Example, the amount of tea you take and level of intelligence.
Plotting Correlation matrix using Python
Step 1: Importing the libraries.
Python3
import
sklearn
import
numpy as np
import
matplotlib.pyplot as plt
import
pandas as pd
Step 2: Finding the Correlation between two variables.
Python3
y
=
pd.Series[[
1
,
2
,
3
,
4
,
3
,
5
,
4
]]
x
=
pd.Series[[
1
,
2
,
3
,
4
,
5
,
6
,
7
]]
correlation
=
y.corr[x]
correlation
Output:
Step 3: Plotting the graph. Here we are using scatter plots. A scatter plot is a diagram where each value in the data set is represented by a dot. Also, it shows a relationship between two variables.
Python3
plt.scatter[x, y]
plt.plot[np.unique[x], np.poly1d[np.polyfit[x, y,
1
]]
[np.unique[x]], color
=
'red'
]
Output:
Remember the points that were explained above. Observe both the images you will find similarity Also, observe the value of the correlation is near to 1, hence the positive correlation is reflected.
Adding title and labels in the graph
Python3
plt.title[
'Correlation'
]
plt.scatter[x, y]
plt.plot[np.unique[x],
np.poly1d[np.polyfit[x, y,
1
]]
[np.unique[x]], color
=
'red'
]
plt.xlabel[
'x axis'
]
plt.ylabel[
'y axis'
]
Output:
Plot using Heatmaps
There are many ways you can plot correlation matrices one efficient way is using the heatmap. It is very easy to understand the correlation using heatmaps it tells the correlation of one feature[variable] to every other feature[variable]. In other words, A correlation matrix is a tabular data representing the ‘correlations’ between pairs of variables in a given data.
Python3
import
seaborn as sns
flights
=
sns.load_dataset[
"flights"
]
ax
=
sns.heatmap[flights.corr[], annot
=
True
]
Output: