pyecharts 畫圖歸納
將本地文件導入到Pyecharts:
test = open(filename, 'r')
data = test.readlines()
test.close()
如果遇到無法導入包的情況:
sudo pip install pyecharts == 0.1.9.4
再不行:
sudo apt - get install python3 - tk
pip3 install pyecharts
mysql文件導入Pycharm的代碼
import pymysql
一頁多圖
from pyecharts import Page
導入柱狀圖Bar
from pyecharts import Bar
導入餅圖Pie
from pyecharts import Pie
導入折線圖Line
from pyecharts import Line
導入雷達圖Radar
from pyecharts import Radar
導入散點圖Scatter
from pyecharts import Scatter
導入詞雲圖WordCloud
from pyecharts import WordCloud
將mysql的數據導入pycharm
db = pymysql.connect("要連接的主機地址localhost", "用於登錄的數據庫用戶root", "密碼strongs", "要連接的數據庫名")
cursor = db.cursor()
sql = "select * from 表名"
try:
cursor.execute(sql)
data = cursor.fetchall()
except:
print("Error!")
db.close()
print(data)
x = [x[0] for x in data]
y = [x[1] for x in data]
page = Page()
柱狀圖-Bar
設置行名
columns = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
設置數據
data1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
data2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
設置柱狀圖的主標題與副標題
bar = Bar("柱狀圖", "一年的降水量與蒸發量", title_color='red', width=1000)
添加柱狀圖的數據及配置項
bar.add("圖標", 列名, 列高(數據), mark_line=["average"], mark_point=["max", "min"])
bar.add("降水量", columns, data1, mark_line=['max'], mark_point=["max", "min"], is_convert=False, area_color='yellow')
bar.add("蒸發量", columns, data2, mark_line=["average"], mark_point=["max", "min"], is_convert=False)
打印輸出圖表的所有配置項
bar.show_config()
生成本地文件(默認為.html文件)
bar.render('./bar.html')
page.add(bar)
餅圖-Pie
設置主標題與副標題,標題設置居中,設置寬度為900
pie = Pie("餅狀圖", "一年的降水量與蒸發量", title_pos='center', width=900)
加入數據,設置坐標位置為【25,50】,上方的colums選項取消顯示
pie.add("降水量", columns, data1, center=[25, 50], is_legend_show=True)
加入數據,設置坐標位置為【75,50】,上方的colums選項取消顯示,顯示label標簽
pie.add("蒸發量", columns, data2, center=[75, 50], is_legend_show=False, is_label_show=True)
pie.show_config()
保存圖表
pie.render('./pie.html')
page.add(pie)
折線圖-Line
line = Line("折線圖", "一年的降水量與蒸發量")
is_label_show是設置上方數據是否顯示
line.add("降水量", columns, data1, is_label_show=True)
line.add("蒸發量", columns, data2, is_label_show=True)
line.render('./line.html')
page.add(line)
雷達圖-Radar
radar = Radar("雷達圖", "一年的降水量與蒸發量")
由於雷達圖傳入的數據得為多維數據,所以這里需要做一下處理
radar_data1 = [[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]]
radar_data2 = [[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]]
設置column的最大值,為了雷達圖更為直觀,這里的月份最大值設置有所不同
schema = [
("Jan", 5), ("Feb", 10), ("Mar", 10),
("Apr", 50), ("May", 50), ("Jun", 200),
("Jul", 200), ("Aug", 200), ("Sep", 50),
("Oct", 50), ("Nov", 10), ("Dec", 5)
]
傳入坐標
radar.config(schema)
radar.add("降水量", radar_data1)
一般默認為同一種顏色,這里為了便於區分,需要設置item的顏色
radar.add("蒸發量", radar_data2, item_color="#1C86EE")
radar.render('./radar.html')
page.add(radar)
散點圖-scatter
scatter = Scatter("散點圖", "一年的降水量與蒸發量")
xais_name是設置橫坐標名稱,這里由於顯示問題,還需要將y軸名稱與y軸的距離進行設置
scatter.add("降水量與蒸發量的散點分布", data1, data2, xaxis_name="降水量", yaxis_name="蒸發量",
yaxis_name_gap=40)
scatter.render('./scatter.html')
page.add(scatter)
詞雲圖-word_cloud
word_cloud = WordCloud(width=1300, height=620)
name = ['Sam S Club', 'Macys', 'Amy Schumer', 'Jurassic World', 'Charter Communications', 'Chick Fil A',
'Planet Fitness', 'Pitch Perfect', 'Express', 'Home', 'Johnny Depp', 'Lena Dunham', 'Lewis Hamilton', 'KXAN',
'Mary Ellen Mark', 'Farrah Abraham', 'Rita Ora', 'Serena Williams', 'NCAA baseball tournament', 'Point Break']
value = [10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112, 965, 847, 582, 555, 550, 462, 366, 360, 282, 273, 265]
word_cloud.add("", name, value, word_size_range=[30, 100], shape='diamond')
word_cloud.show_config()
word_cloud.render()
page.add(word_cloud)
page.render('./all-plots.html')
圖表布局
from pyecharts import Grid
設置折線圖標題位置
line = Line("折線圖", "一年的降水量與蒸發量", title_top="45%")
line.add("降水量", columns, data1, is_label_show=True)
line.add("蒸發量", columns, data2, is_label_show=True)
grid = Grid()
設置兩個圖表的相對位置
grid.add(bar, grid_bottom="60%")
grid.add(line, grid_top="60%")
grid.render()
結合不同類型圖表疊加
from pyecharts import Overlap
overlap = Overlap()
bar = Bar("柱狀圖-折線圖合並", "一年的降水量與蒸發量")
bar.add("降水量", columns, data1, mark_point=["max", "min"])
bar.add("蒸發量", columns, data2, mark_point=["max", "min"])
overlap.add(bar)
overlap.add(line)
overlap.render()