How to plot a graph with matplotlib - python

Good evening, I am a student taking a required python course (completely new to coding) in Hong Kong.
I was asked to write a python program that shows a graph in an assignment, but I had encountered some difficulties.
I tried to follow some source codes I found on the internet, but it end up showing a bug-like page.
Can someone please kindly tell me which part of my code is wrong, how to correct it, and why is this resulting happening?
Also, I would like to ask that is there any difference between import as mpl and as plt?
source code:
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import numpy as np
xaxis = np.array([2,8])
yaxis = np.array([4,9])
plt.plot(xaxis, yaxis )
plt.show()
plt.savefig('table.png')
result:
bug-like result
Thank you all very much. Hope you have a nice day.

Related

Interactive Ploting

I'm searching for an interactive pliting library. I have some dataset that I would like to plot like a scatter (if posible over an image), And need to show some information on focus (or click if focus it's not posible). Let's say for sake of the question, some number.
I don't really know if there a tool that would let me do this, without an excesive amount of code (probably I can do it myself using a canvas in tkinter).
I only have some experience in matplotlib for ploting. That's my principal limitation.
What I'm doing now is to annotate every marker with something like this:
import matplotlib.pyplot as plt
import numpy as np
x = [1,2,3,4,5]
y = [2,3,1,1,5]
an = [10,42,3,33,4]
plt.figure()
plt.plot(x,y,'o')
for i,a in enumerate(an):
plt.annotate(a, (x[i],y[i]))
Thanks in advance, and sorry if something isn't clear

How to smooth data

I have a data file that I would like to smooth out. I am not sure on how to do it. I have looked at a few things and nothing really helps. here is my code as is:
import matplotlib.pyplot as plt
import numpy as np
data1 = np.loadtxt('2_Record2308.dat')
plt.title('2_Record2308')
plt.plot(data1)
plt.show()
I know you can do it with the "spicy" thing but I would prefer not to use it.

Using plotly for a surface plot

I'm trying to plot the Surface plot using plotly command for the function f(x,y)=x+y.
The following is the code I use in Jupyter notebook
import numpy as np
x=np.linspace(-10,10,100)
y=np.linspace(-10,10,100)
X,Y=np.meshgrid(x,y)
Z=x+y
import plotly
import plotly.graph_objects as go
plotly.offline.init_notebook_mode()
trace=go.Surface(x=x,y=y,z=Z)
data=[trace]
fig=go.Figure(data=data)
plotly.offline.iplot(fig)
But unfortunately I'm only getting some thing like this:
Can someone please explain what I have done wrong ?
I figured it out!
I have put x instead of X in the go.Surface

My plot bar graph isn't showing up. What's wrong with my code

import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
%matplotlib notebook
plt.figure(figsize=(12, 6))
CasData.pivot(index='year', columns='CasualtyNumber', values='People').plot(kind='bar')
plt.title('Casualties per year')
plt.xlabel('Year', fontsize=5)
plt.ylabel('Number of Casualties')
plt.show()
My plot bar graph using matplotlib.pyplot isn't showing.
I don't know why but my bar graph isn't showing. I've tried different ways.
If someone could help me out please. I'd appreciate it. Thank you.
Remove the line %matplotlib notebook.
It is overriding the previous line (these two lines are setting the backend). inline returns static plots, notebook is used for interactivity.
You also do not need the plt.show() line. This is taken care of by the inline backend.
This answer explains more about the backends: https://stackoverflow.com/a/43028034/6709902
I'm not really sure about your code as it seems incomplete but if you're using pivot I assumed you're pulling the data from a ".csv" file.
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
%matplotlib notebook
CasData = pd.read_csv('data.csv')
CasData.pivot_table(index='year', columns='CasualtyNumber', values='People').plot(kind='bar')
plt.title('Casualties per year')
plt.xlabel('Year',fontsize='5')
plt.ylabel('Number of Casualties')
plt.show()
You need to provide the data in order to plot something and I don't
see you providing any.

box plot not appearing in Google Colab

Trying to create a simple Box Plot using Google Colab for my Intro Python class. It is not appearing as I would like it. You can see my code and output below. I read in a file on NBA statistics, and my box plot would be based on a variable called "SHOT_CLOCK".
So far what I have:
import pandas as pd
from matplotlib import pyplot as plt
df = pd.read_csv('file path')
plt.boxplot(df['SHOT_CLOCK'], vert=False)
plt.title('Box Plot for SHOT_CLOCK')
plt.xlabel('Shot Clock')
plt.show()
Output:
Edit
In your example you are passing a Series object, try this way
plt.figure()
plt.title('Box Plot for SHOT_CLOCK')
plt.xlabel('Shot Clock')
df.boxplot(column='SHOT_CLOCK')
Once you add the following Import to your code it will work:
import matplotlib.pyplot as plt
plt.style.use('classic')
%matplotlib inline

Categories