数据可视化~pandas绘图(熊猫会画图?)

论坛 期权论坛     
选择匿名的用户   2021-5-23 02:50   0   0
<p><a href="http://www.juzicode.com/archives/3112">原文链接:http://www.juzicode.com/archives/3112</a></p>
<p>pandas为我们提供了容易上手使用的数据结构和数据分析工具,它的Series和DataFrame数据类型都有一个plot()方法,可以用于绘制常用图形。</p>
<p> </p>
<h2>1、线型图、基本绘图方法</h2>
<p>构造Series时,传入的第1个位置参数对应坐标y的值,index参数对应坐标x的值,下面这个例子是一个正弦波曲线,x的取值从-2.0到2.0,间隔0.1;用pd.Series()构造了一个实例pdseries,使用pdseries.plot()方法可以绘制出默认kind&#61;’line’形式的图形:</p>
<pre class="blockcode"><code>#juzicode.com
#vx:桔子code
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

t &#61; np.arange(-2.0, 2.0, 0.01)
s &#61; np.sin(2 * np.pi * t)  
pdseries &#61; pd.Series(s, index&#61;t)
print(pdseries)
pdseries.plot()
plt.show()</code></pre>
<p><img alt="" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-de9b5ddd3647ad751c719a67b84a6363.png"></p>
<p>和matplotlib一样,如果要正常显示中文,需要使用plt.rc()进行相应的设置,这里可以看到详细的设置方法:<a href="http://www.juzicode.com/archives/2421">Python数据可视化~matplot默认配置修改(可解决中文、负号等显示问题)http://www.juzicode.com/archives/2421</a></p>
<pre class="blockcode"><code>#juzicode.com
#vx:桔子code
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

plt.rc(&#39;font&#39;,family&#61;&#39;Youyuan&#39;,size&#61;&#39;11&#39;) #和matplotlib一样指明字体
plt.rc(&#39;axes&#39;,unicode_minus&#61;&#39;False&#39;)

t &#61; np.arange(-2.0, 2.0, 0.01)
s &#61; np.sin(2 * np.pi * t)  
pdseries &#61; pd.Series(s, index&#61;t)
print(pdseries)
plt.title(&#39;sin(x) by桔子code&#39;) #设置中文标题
pdseries.plot()
plt.show()</code></pre>
<p><img alt="" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-0b3ba82fa554f9f1295537fb1d0ede51.png"></p>
<p>更进一步的,可以参照pyplot.plot()方法设置曲线的类型、颜色等,可以参考这里:<a href="http://www.juzicode.com/archives/2455">数据可视化~matplotlib基本绘图方法http://www.juzicode.com/archives/2455</a></p>
<pre class="blockcode"><code>#juzicode.com
#vx:桔子code
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

plt.rc(&#39;font&#39;,family&#61;&#39;Youyuan&#39;,size&#61;&#39;11&#39;) #和matplotlib一样指明字体
plt.rc(&#39;axes&#39;,unicode_minus&#61;&#39;False&#39;)

t &#61; np.arange(-2.0, 2.0, 0.01)
s &#61; np.sin(2 * np.pi * t)  
pdseries &#61; pd.Series(s, index&#61;t)
print(pdseries)
plt.title(&#39;sin(x) by桔子code&#39;) #设置中文标题
pdseries.plot(style&#61;&#39;--g&#39;,grid&#61;True,alpha&#61;0.6,rot&#61;30)#绿色虚线,显示grid,x轴旋转30度
plt.show()</code></pre>
<p><img alt="" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-f03aa505c17d5828e04e6faa6bb3f45e.png"></p>
<p> </p>
<h2>2、柱状图</h2>
<p>使用plot(kind&#61;’bar’)或者plot.bar()绘制柱状图,使用下面2种方法效果是一样的:</p>
<pre class="blockcode"><code>pdseries.plot(kind&#61;&#39;bar&#39;, align&#61;&#39;center&#39;,alpha&#61;0.6,rot&#61;50)#入参kind&#61;&#39;bar&#39;
pdseries.plot.bar(align&#61;&#39;center&#39;,alpha&#61;0.6,rot&#61;50)</code></pre>
<p>完整的例子:</p>
<pre class="blockcode"><code>#juzicode.com
#vx:桔子code
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

plt.rc(&#39;font&#39;,family&#61;&#39;Youyuan&#39;,size&#61;&#39;11&#39;) #和matplotlib一样指明字体
plt.rc(&#39;axes&#39;,unicode_minus&#61;&#39;False&#39;)

fruit &#61; (&#39;桔子&#39;, &#39;橙子&#39;, &#39;西瓜&#39;, &#39;苹果&#39;, &#39;香蕉&#39;, &#39;西红柿&#39;)
weight &#61; (100,135,50,83,92,66)
pdseries &#61; pd.Series(weight, index&#61;fruit)
print(pdseries)
plt.title(&#39;柱状图 by桔子code&#39;) #设置中文标题
pdseries.plot(kind&#61;&#39;bar&#39;, align&#61;&#39;center&#39;,alpha&#61;0.6,rot&#61;50)
#pdseries.plot.bar(align&#61;&#39;center&#39;,alpha&#61;0.6,rot&#61;50)
plt.show()</code></pre>
<p> </p>
<p><img alt="" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-c799980c4bbb9600bd4da3ab25355a5b.png"></p>
<p> </p>
<h2>3、水平柱状图</h2>
<p>使用plot(kind&#61;’barh’)或者plot.barh()绘制水平柱状图。rot参数设置x标签的旋转角度,alpha设置透明度,align设置对齐位置。</p>
<pre class="blockcode"><code>#juzicode.com
#vx:桔子code
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

plt.rc(&#39;font&#39;,family&#61;&#39;Youyuan&#39;,size&#61;&#39;11&#39;) #和matplotlib一样指明字体
plt.rc(&#39;axes&#39;,unicode_minus&#61;&#39;False&#39;)

fruit &#61; (&#39;桔子&#39;, &#39;橙子&#39;, &#39;西瓜&#39;, &#39;苹果&#39;, &#39;香蕉&#39;, &#39;西红柿&#39;)
weight &#61; (100,135,50,83,92,66)
pdseries &#61; pd.Series(weight, index&#61;fruit)
print(pdseries)
plt.title(&#39;柱状图 by桔子code&#39;) #设置中文标题
pdseries.plot(kind&#61;&#39;barh&#39;, align&#61;&#39;center&#39;,alpha&#61;0.6,rot&#61;0)
#pdseries.
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP