Heim >Backend-Entwicklung >Python-Tutorial >[Python-Tutorial] Zeichnen Sie ein wunderschönes Histogramm

[Python-Tutorial] Zeichnen Sie ein wunderschönes Histogramm

黄舟
黄舟Original
2017-02-07 16:14:364401Durchsuche

Matplotlib是基于Python语言的开源项目,其旨在为Python提供一个数据绘图包,本文简单介绍如何使用该程序包绘制漂亮的柱状图。

导入命令

1)设置工作环境%cd "F:\\Dropbox\\python"2)导入程序包import matplotlib.pyplot as plt
import numpy as np
from matplotlib.image import BboxImage
from matplotlib._png import read_png
import matplotlib.colors
from matplotlib.cbook import get_sample_data
import pandas as pd3)读取数据data=pd.read_csv("CAR.csv")4)定义并绘制图像
class RibbonBox(object):original_image = read_png(get_sample_data("Minduka_Present_Blue_Pack.png",asfileobj=False))cut_location = 70
b_and_h = original_image[:,:,2]
color = original_image[:,:,2] - original_image[:,:,0]
alpha = original_image[:,:,3]
nx = original_image.shape[1]def __init__(self, color):
rgb = matplotlib.colors.colorConverter.to_rgb(color)im = np.empty(self.original_image.shape,
self.original_image.dtype)im[:,:,:3] = self.b_and_h[:,:,np.newaxis]
im[:,:,:3] -= self.color[:,:,np.newaxis]*(1.-np.array(rgb))
im[:,:,3] = self.alphaself.im = imdef get_stretched_image(self, stretch_factor):
stretch_factor = max(stretch_factor, 1)
ny, nx, nch = self.im.shape
ny2 = int(ny*stretch_factor)stretched_image = np.empty((ny2, nx, nch),
self.im.dtype)
cut = self.im[self.cut_location,:,:]
stretched_image[:,:,:] = cut
stretched_image[:self.cut_location,:,:] = \
self.im[:self.cut_location,:,:]
stretched_image[-(ny-self.cut_location):,:,:] = \
self.im[-(ny-self.cut_location):,:,:]self._cached_im = stretched_image
return stretched_image
class RibbonBoxImage(BboxImage):
zorder = 1def __init__(self, bbox, color,
cmap = None,
norm = None,
interpolation=None,
origin=None,
filternorm=1,
filterrad=4.0,
resample = False,
**kwargs
):BboxImage.__init__(self, bbox,
cmap = cmap,
norm = norm,
interpolation=interpolation,
origin=origin,
filternorm=filternorm,
filterrad=filterrad,
resample = resample,
**kwargs
)self._ribbonbox = RibbonBox(color)
self._cached_ny = Nonedef draw(self, renderer, *args, **kwargs):bbox = self.get_window_extent(renderer)
stretch_factor = bbox.height / bbox.widthny = int(stretch_factor*self._ribbonbox.nx)
if self._cached_ny != ny:
arr = self._ribbonbox.get_stretched_image(stretch_factor)
self.set_array(arr)
self._cached_ny = nyBboxImage.draw(self, renderer, *args, **kwargs)if 1:
from matplotlib.transforms import Bbox, TransformedBbox
from matplotlib.ticker import ScalarFormatterfig, ax = plt.subplots()years = np.arange(2001,2008)
box_colors = [(0.8, 0.2, 0.2),
(0.2, 0.8, 0.2),
(0.2, 0.2, 0.8),
(0.7, 0.5, 0.8),
(0.3, 0.8, 0.7),
(0.4, 0.6, 0.3),
(0.5, 0.5, 0.1),
]
heights = data['price']fmt = ScalarFormatter(useOffset=False)
ax.xaxis.set_major_formatter(fmt)for year, h, bc in zip(years, heights, box_colors):
bbox0 = Bbox.from_extents(year-0.4, 0., year+0.4, h)
bbox = TransformedBbox(bbox0, ax.transData)
rb_patch = RibbonBoxImage(bbox, bc, interpolation="bicubic")ax.add_artist(rb_patch)
ax.annotate(h,
(year, h), va="bottom", ha="center")
ax.set_title('The Price of Car')patch_gradient = BboxImage(ax.bbox,
interpolation="bicubic",
zorder=0.1,
)
gradient = np.zeros((2, 2, 4), dtype=np.float)
gradient[:,:,:3] = [1, 1, 0.]
gradient[:,:,3] = [[0.1, 0.3],[0.3, 0.5]]
patch_gradient.set_array(gradient)
ax.add_artist(patch_gradient)ax.set_xlim(years[0]-0.5, years[-1]+0.5)
ax.set_ylim(0, 15000)5)保存图像fig.savefig('The Price of Car.png')
plt.show()

输出图像如下

[Python-Tutorial] Zeichnen Sie ein wunderschönes Histogramm

以上就是【Python教程】绘制漂亮的柱状图的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn