画图
有大佬能用python画图片里面的柱状图吗。数据在压缩包里。然后柱状图可以是性别和对手机电池容量的。跪求大佬指点 你要画成什么样的 pyecharts 和 matplotlib 都可以 BIO-张磊 发表于 2020-6-24 21:02你要画成什么样的
就是画成柱状图,横轴是类别:男和女,然后纵轴是满意不满意的人数
liuzhengyuan 发表于 2020-6-24 21:05
pyecharts 和 matplotlib 都可以
呃,其实我想说大佬有类似案例的源程序吗{:10_266:}{:10_266:}{:10_266:} 君子好逑 发表于 2020-6-24 21:07
呃,其实我想说大佬有类似案例的源程序吗
没试过,不知道行不行
pyechats:https://www.jianshu.com/p/554d64470ec9
matplotlib:https://www.jianshu.com/p/e8033e25e1aa
应该不太好理解,不知道有没有更好的教程 liuzhengyuan 发表于 2020-6-24 21:09
没试过,不知道行不行
pyechats:https://www.jianshu.com/p/554d64470ec9
matplotlib:https://www.ji ...
谢谢大佬帮助{:10_297:} 本帖最后由 liuzhengyuan 于 2020-6-24 21:15 编辑
君子好逑 发表于 2020-6-24 21:11
谢谢大佬帮助
好像现在 pyecharts 语法变了,这个不管用了,不要意思,我再去研究研究 liuzhengyuan 发表于 2020-6-24 21:13
好像现在 pyecharts 语法变了,这个不管用了,不要意思,我再去研究研究
大佬,你就像一道光照亮了我黑暗的课题{:10_254:}{:10_254:}{:10_254:} 君子好逑 发表于 2020-6-24 21:17
大佬,你就像一道光照亮了我黑暗的课题
其实尽管语法变了,但是代码执行完后,在同级目录下还会出现一个叫 xxx.html 的文件,打开就是图表了{:10_277:} 话说你发的图片 和你的数据没有关联吧?日期呢? 你想把什么设为 x 轴 什么设为 y 轴? 本帖最后由 Twilight6 于 2020-6-24 21:34 编辑
给你个模板:
import matplotlib.pyplot as plt
# 已知数据
a = ['Monday','Tuesday','Friday','Sunday']
b_15 =
b_14 =
# 设置中文文字
plt.rcParams['font.sans-serif'] = ['SIMHEI']
# 设置图片大小,dpi设置分辨率
plt.figure(figsize=(15,5),dpi=80)
# 设置初始宽度
bar_width = 0.2
# 设置x轴数据
x_14 = list(range(len(a)))
x_15 =
# 设置条形图
plt.bar(x_14,b_14,width=bar_width,label='9月14日')
plt.bar(x_15,b_15,width=bar_width,label='9月15日')
# 显示图例
plt.legend()
# 设置x轴刻度
plt.xticks(x_15,a)
# 设置x、y轴信息,图片标题
plt.xlabel('我是x轴标题')
plt.ylabel('我是y轴标题')
plt.title('xxxxxx柱状图')
# 显示图片
plt.show() 本帖最后由 BIO-张磊 于 2020-6-24 21:58 编辑
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv("table.csv")
data_sex = data.iloc[:,2]
data_result = data.iloc[:,6]
new_data = pd.DataFrame(list(zip(data_sex,data_result)))
new_data_male = new_data == "男"]
new_data_female = new_data == "女"]
male = list(new_data_male.value_counts())
female = list(new_data_female.value_counts())
plt.bar(,male,width = 0.2,edgecolor = "white")
plt.bar(,female,width = 0.2,edgecolor = "white")
sex = ["male","female"]
plt.xticks(,sex)
plt.show()
结果如下图,男女做横坐标轴,男/女的部分,分别是满意,勉强够用,不满意
https://xxx.ilovefishc.com/album/202006/24/215608k6xrnqf6b62w629a.png Twilight6 发表于 2020-6-24 21:22
话说你发的图片 和你的数据没有关联吧?日期呢? 你想把什么设为 x 轴 什么设为 y 轴?
呃,大佬,我发的图片其实就是个样例,意思就是成果是跟图片上差不多的柱状图。然后数据的话其实是自选,横轴可以选男女或者是其他的比如职业类别,然后纵轴就可以选另一个,随便选两个做横轴纵轴就行,而我比较喜欢男女做横轴{:10_256:}{:10_256:}{:10_256:} BIO-张磊 发表于 2020-6-24 21:52
谢谢大佬,祝你明天出门就有艳遇,低头就能捡钱{:10_256:}{:10_256:}{:10_256:} 君子好逑 发表于 2020-6-24 21:58
谢谢大佬,祝你明天出门就有艳遇,低头就能捡钱
这个如果不是你需要的图,那我也没办法了,我把效果图放在上面了 本帖最后由 BIO-张磊 于 2020-6-24 22:24 编辑
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv("table.csv")
data_sex = data.iloc[:,2]
data_result = data.iloc[:,6]
new_data = pd.DataFrame(list(zip(data_sex,data_result)))
new_data_male = new_data == "男"]
new_data_female = new_data == "女"]
male = list(new_data_male.value_counts())
female = list(new_data_female.value_counts())
plt.bar(,male,width = 0.2,edgecolor = "white",label='male')
plt.bar(,female,width = 0.2,edgecolor = "white",label='female')
result = ["manyi","mianqianggouyong","bumanyi"]
plt.xticks(,result)
plt.legend()
plt.show()
https://xxx.ilovefishc.com/album/202006/24/222355mm39zkstkmll8xtk.png
我把代码略微改了以下,应该是你要的效果图了,不过这不是性别做横坐标轴,这叫性别作图例,下次用词准确 BIO-张磊 发表于 2020-6-24 21:59
这个如果不是你需要的图,那我也没办法了,我把效果图放在上面了
稳大佬,差不多就是这个样子的
本帖最后由 BIO-张磊 于 2020-6-25 21:50 编辑
君子好逑 发表于 2020-6-25 11:44
稳大佬,差不多就是这个样子的
把这段代码保存为一个新的文件,和你那个table.csv放在同一个文件夹下,双击运行代码文件,就会出来你要的图。pandas numpy 和matplotlib这三个没有,就自己安装,满意请采纳
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
def read_data(url,col_a = 0,col_b = 1):
#读取数据
global data,new_data
data = pd.read_csv(url)
data_col = data.columns.to_list()
data = data[,data_col]]
#确定index
data_index = sorted(list(data.iloc[:,0].drop_duplicates()))
#data_columns = sorted(list(data.iloc[:,1].drop_duplicates()))
new_data = pd.DataFrame()
#统计columns的次数
for i in data_index:
data_i = pd.DataFrame((data == i].iloc[:,1]).value_counts()).T
data_i.index =
new_data = pd.concat()
else:
if np.any(new_data.isnull()):#如果有缺失值
new_data.fillna(value = 0,inplace = True)
#设置stacked和T两个变量,可以让bar绘制四种类型的图
def bar(data_bar,width = 0.5,edgecolor = "white",stacked = False,T = False):
#兼容中文
plt.rcParams['font.sans-serif'] = ['SIMHEI']
if T:#若T为True,转置index和columns
data_bar = data_bar.T
if stacked :#stacked为True绘制堆积柱状图
data_bar.plot.bar(width = width,stacked = stacked)
else:
data_bar.plot.bar(width = width,edgecolor = edgecolor)
plt.show()
if __name__ == "__main__":
read_data("table.csv",2,6)
bar(new_data,stacked = False,T = False)
bar(new_data,stacked = False,T = True)
bar(new_data,stacked = True,T = False)
bar(new_data,stacked = True,T = True)
页:
[1]