• Supposely, I have the bar chart as below:Any ideas on how to set different colors for each carrier? As for example, AK would be Red, GA would be Green, ...I am using Pandas and matplotlib in Python>>...

Supposely, I have the bar chart as below:

Any ideas on how to set different colors for each carrier? As for example, AK would be Red, GA would be Green, etc?
I am using Pandas and matplotlib in Python
>>> f=plt.figure()
>>> ax.bar([1,2,3,4], [1,2,3,4])

>>> ax.get_children()
[, , , , , , , , , , , ]
>>> ax.get_children()[2].set_color('r') #You can also try to locate the first patches.Rectangle object instead of direct calling the index.
For the suggestions above, how do exactly we could enumerate ax.get_children() and check if the object type is rectangle? So if the object is rectangle, we would assign different random color?
解决方案
Simple, just use .set_color
>>> barlist=plt.bar([1,2,3,4], [1,2,3,4])
>>> barlist[0].set_color('r')
>>> plt.show()

For your new question, not much harder either, just need to find the bar from your axis, an example:
>>> f=plt.figure()
>>> ax.bar([1,2,3,4], [1,2,3,4])

>>> ax.get_children()
[,
,
,
,
,
,
,
,
,
,
,
]
>>> ax.get_children()[2].set_color('r')
#You can also try to locate the first patches.Rectangle object
#instead of direct calling the index.
If you have a complex plot and want to identify the bars first, add those:
>>> import matplotlib
>>> childrenLS=ax.get_children()
>>> barlist=filter(lambda x: isinstance(x, matplotlib.patches.Rectangle), childrenLS)
[,
,
,
,
]
展开全文
• 条形图（bar chart），也称为柱状图，是一种以长方形的长度为变量的统计图表，长方形的长度与它所对应的变量数值呈一定比例。 1. 竖放条形图条形图要用到 pyplot 中的 bar 函数，该函数的基本语法为： bar(x, ...
• ## python 画条形图（柱状图）

万次阅读 多人点赞 2019-08-24 00:06:35
竖放条形图bar(x, height, [width], **kwargs)2. 画横放条形图bar(x, width, [height], **kwargs)3. 并列条形图 条形图（bar chart），也称为柱状图，是一种以长方形的长度为变量的统计图表，长方形的长度与它所...


文章目录
1. 竖放条形图bar(x, height, [width], **kwargs)

2. 横放条形图bar(x, width, [height], **kwargs)

3. 并列条形图

条形图（bar chart），也称为柱状图，是一种以长方形的长度为变量的统计图表，长方形的长度与它所对应的变量数值呈一定比例。

1. 竖放条形图
画条形图要用到 pyplot 中的 bar 函数，该函数的基本语法为：

bar(x, height, [width], **kwargs)

x数组，每个条形的横坐标height个数或一个数组，条形的高度[width]可选参数，一个数或一个数组，条形的宽度，默认为 0.8**kwargs不定长的关键字参数，用字典形式设置条形图的其他属性
**kwargs 中常设置的参数包括图形标签 label，颜色标签 color，不透明度 alpha 等。
假设某项针对男女大学生购买饮用水爱好的调查结果如下表：
男女碳酸饮料69绿茶74矿泉水64其他26果汁15总计2228
画出男生饮用水情况的直方图，代码如下：
import matplotlib.pyplot as plt

# 这两行代码解决 plt 中文显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

waters = ('碳酸饮料', '绿茶', '矿泉水', '果汁', '其他')
buy_number = [6, 7, 6, 1, 2]

plt.title('男性购买饮用水情况的调查结果')

plt.show()

图形：
2. 横放条形图
若要生成横的条形图，则可以使用 barh 函数，其语法与 bar 函数非常类似。

bar(x, width, [height], **kwargs)

y数组，每个条形的纵坐标width一个数或一个数组，条形的宽度[height]可选参数，一个数或一个数组，条形的高度，默认为 0.8**kwargs不定长的关键字参数，用字典形式设置条形图的其他属性
代码：
import matplotlib.pyplot as plt

# 这两行代码解决 plt 中文显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

waters = ('碳酸饮料', '绿茶', '矿泉水', '果汁', '其他')
buy_number = [6, 7, 6, 1, 2]

plt.title('男性购买饮用水情况的调查结果')

plt.show()


3. 并列条形图
若要将男生与女生的调查情况画出两个条形图一块显示，则可以使用 bar 或 barh 函数两次，并调整 bar 或 barh 函数的条形图位置坐标以及相应刻度，使得两组条形图能够并排显示。
import matplotlib.pyplot as plt
import numpy as np

# 这两行代码解决 plt 中文显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 输入统计数据
waters = ('碳酸饮料', '绿茶', '矿泉水', '果汁', '其他')
buy_number_male = [6, 7, 6, 1, 2]
buy_number_female = [9, 4, 4, 5, 6]

bar_width = 0.3  # 条形宽度
index_male = np.arange(len(waters))  # 男生条形图的横坐标
index_female = index_male + bar_width  # 女生条形图的横坐标

# 使用两次 bar 函数画出两组条形图

plt.legend()  # 显示图例
plt.xticks(index_male + bar_width/2, waters)  # 让横坐标轴刻度显示 waters 里的饮用水， index_male + bar_width/2 为横坐标轴刻度的位置
plt.ylabel('购买量')  # 纵坐标轴标题
plt.title('购买饮用水情况的调查结果')  # 图形标题

plt.show()

显示： 
展开全文
• I am a begginer of python. I am trying to make a horizontal barchart with differently ordered colors.I have a data set like the one in the below:dataset = [{'A':19, 'B':39, 'C':61, 'D':70},{'A':34, 'B...

I am a begginer of python. I am trying to make a horizontal barchart with differently ordered colors.
I have a data set like the one in the below:
dataset = [{'A':19, 'B':39, 'C':61, 'D':70},
{'A':34, 'B':68, 'C':32, 'D':38},
{'A':35, 'B':45, 'C':66, 'D':50},
{'A':23, 'B':23, 'C':21, 'D':16}]
data_orders = [['A', 'B', 'C', 'D'],
['B', 'A', 'C', 'D'],
['A', 'B', 'D', 'C'],
['B', 'A', 'C', 'D']]
The first list contains numerical data, and the second one contains the order of each data item. I need the second list here, because the order of A, B, C, and D is crucial for the dataset when presenting them in my case.
Using data like the above, I want to make a stacked bar chart like the picture in the below. It was made with MS Excel by me manually. What I hope to do now is to make this type of bar chart using Matplotlib with the dataset like the above one in a more automatic way. I also want to add a legend to the chart if possible.

Actually, I have totally got lost in trying this by myself. Any help will be very, very helpful.
Thank you very much for your attention!
解决方案
It's a long program, but it works, I added one dummy data to distinguish rows count and columns count:
import numpy as np
from matplotlib import pyplot as plt
dataset = [{'A':19, 'B':39, 'C':61, 'D':70},
{'A':34, 'B':68, 'C':32, 'D':38},
{'A':35, 'B':45, 'C':66, 'D':50},
{'A':23, 'B':23, 'C':21, 'D':16},
{'A':35, 'B':45, 'C':66, 'D':50}]
data_orders = [['A', 'B', 'C', 'D'],
['B', 'A', 'C', 'D'],
['A', 'B', 'D', 'C'],
['B', 'A', 'C', 'D'],
['A', 'B', 'C', 'D']]
colors = ["r","g","b","y"]
names = sorted(dataset[0].keys())
values = np.array([[data[name] for name in order] for data,order in zip(dataset, data_orders)])
lefts = np.insert(np.cumsum(values, axis=1),0,0, axis=1)[:, :-1]
orders = np.array(data_orders)
bottoms = np.arange(len(data_orders))
for name, color in zip(names, colors):
idx = np.where(orders == name)
value = values[idx]
left = lefts[idx]
plt.bar(left=left, height=0.8, width=value, bottom=bottoms,
color=color, orientation="horizontal", label=name)
plt.yticks(bottoms+0.4, ["data %d" % (t+1) for t in bottoms])
plt.legend(loc="best", bbox_to_anchor=(1.0, 1.00))
plt.show()
the result figure is:

展开全文
• #x,y为横纵坐标数据，height设置条形图的宽度，color设置条形图颜色，label设置条形图图列 绘制三条条形图的代码示例如下： from matplotlib import pyplot as plt from matplotlib import font_manager #调用中文...
• 使用matplotlib或plotly在Python中制作动画条形图和折线图竞赛。 官方文件 请访问以获取详细的使用说明。 安装 使用以下任一方式安装： pip install bar_chart_race conda install -c conda-forge bar_chart_race ...
• python画柱状容易，但是如何对不同柱子使用不同颜色呢？同时在柱子顶端显示精确数值？ 主要用的方法为： atplotlib.pyplot.bar(left, height, width=0.8, bottom=None, hold=None, data=None, **kwargs) 参数...
• 一、条形图绘制参数详解1、bar(left, height, width=0.8, bottom=None, color=None, edgecolor=None, linewidth=None, tick_label=None, xerr=None, yerr=None, label = None, ecolor=None, align, log=False, **...
一、条形图绘制参数详解
1、bar(left, height, width=0.8, bottom=None, color=None, edgecolor=None, linewidth=None, tick_label=None, xerr=None, yerr=None, label = None, ecolor=None, align, log=False, **kwargs)
x：传递数值序列，指定条形图中x轴上的刻度值
height：传递数值序列，指定条形图y轴上的高度
width：指定条形图的宽度，默认为0.8
bottom：用于绘制堆叠条形图
color：指定条形图的填充色
edgecolor：指定条形图的边框色
linewidth：指定条形图边框的宽度，如果指定为0，表示不绘制边框
tick_label：指定条形图的刻度标签
xerr：如果参数不为None，表示在条形图的基础上添加误差棒
yerr：参数含义同xerr
label：指定条形图的标签，一般用以添加图例
ecolor：指定条形图误差棒的颜色align：指定x轴刻度标签的对齐方式，默认为center，表示刻度标签居中对齐，如果设置为edge，则表示在每个条形的左下角呈现刻度标签
log：bool类型参数，是否对坐标轴进行log变换，默认为False
**kwargs：关键字参数，用于对条形图进行其他设置，如透明度等
1 #条形图的绘制--垂直条形图
2 #读入数据
3 GDP = pd.read_excel('Province GDP 2017.xlsx')4 '''
5 Province GDP6 北京 2.87 上海 3.018 广东 8.999 江苏 8.5910 重庆 1.9511 天津 1.8612 '''
13 #设置绘图风格（不妨使用R语言中的ggplot2风格）
14 plt.style.use('ggplot')15 #绘制条形图
16 plt.bar(x = range(GDP.shape[0]), #指定条形图x轴的刻度值
17 height = GDP.GDP, #指定条形图y轴的数值
18 tick_label = GDP.Province, #指定条形图x轴的刻度标签
19 color = 'steelblue', #指定条形图的填充色
20 width = 0.8
21 )22 #添加y轴的标签
23 plt.ylabel('GDP(万亿)')24 #添加条形图的标题
25 plt.title('2017年度6个省份GDP分布')26 #为每个条形图添加数值标签
27 for x,y inenumerate(GDP.GDP):28 plt.text(x,y+0.1,'%s' %round(y,1),ha='center')29 #显示图形
30 plt.show()

1 #条形图的绘制--水平条形图
2 #对读入的数据作升序排序
3 GDP.sort_values(by = 'GDP', inplace =True)4 #绘制条形图
5 plt.barh(y = range(GDP.shape[0]), #指定条形图y轴的刻度值
6 width = GDP.GDP, #指定条形图x轴的数值
7 tick_label = GDP.Province, #指定条形图y轴的刻度标签
8 color = 'steelblue', #指定条形图的填充色
9 )10 #添加x轴的标签
11 plt.xlabel('GDP(万亿)')12 #添加条形图的标题
13 plt.title('2017年度6个省份GDP分布')14 #为每个条形图添加数值标签
15 for y,x inenumerate(GDP.GDP):16 plt.text(x+0.1,y,'%s' %round(x,1),va='center')17 #显示图形
18 plt.show()

③绘制堆叠条形图
1 importpandas as pd2 importmatplotlib.pyplot as plt3 #条形图的绘制--堆叠条形图
4 #读入数据
7 Quarters =Industry_GDP.Quarter.unique()8 #取出第一产业的四季度值
9 Industry1 = Industry_GDP.GPD[Industry_GDP.Industry_Type == '第一产业']10 #重新设置行索引
11 Industry1.index =range(len(Quarters))12 #取出第二产业的四季度值
13 Industry2 = Industry_GDP.GPD[Industry_GDP.Industry_Type == '第二产业']14 #重新设置行索引
15 Industry2.index =range(len(Quarters))16 #取出第三产业的四季度值
17 Industry3 = Industry_GDP.GPD[Industry_GDP.Industry_Type == '第三产业']18
19 #绘制堆叠条形图
20 #中文乱码和坐标轴负号的处理
21 plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']22 plt.rcParams['axes.unicode_minus'] =False23 #各季度下第一产业的条形图
24 plt.bar(x = range(len(Quarters)), height=Industry1, color = 'steelblue', label = '第一产业', tick_label =Quarters)25 #各季度下第二产业的条形图
26 plt.bar(x = range(len(Quarters)), height=Industry2, bottom = Industry1, color = 'green', label = '第二产业')27 #各季度下第三产业的条形图
28 plt.bar(x = range(len(Quarters)), height=Industry3, bottom = Industry1 + Industry2, color = 'red', label = '第三产业')29 #添加y轴标签
30 plt.ylabel('生成总值（亿）')31 #添加图形标题
32 plt.title('2017年各季度三产业总值')33 #显示各产业的图例
34 plt.legend(loc =2,fontsize = 'small')35 #显示图形
36 plt.show()

④水平交错条形图
1 #条形图的绘制--水平交错条形图
2 #导入第三方模块
3 importmatplotlib.pyplot as plt4 importnumpy as np5 importpandas as pd6 #读入数据
9 Cities =HuRun.City.unique()10 #取出2016年各城市亿万资产家庭数
11 Counts2016 = HuRun.Counts[HuRun.Year == 2016]12 #取出2017年各城市亿万资产家庭数
13 Counts2017 = HuRun.Counts[HuRun.Year == 2017]14
15 #绘制水平交错条形图
16 bar_width = 0.4
17 plt.bar(x = np.arange(len(Cities)), height = Counts2016, label = '2016', color = 'steelblue', width =bar_width)18 plt.bar(x = np.arange(len(Cities))+bar_width, height = Counts2017, label = '2017', color = 'indianred', width =bar_width)19 #添加刻度标签（向右偏移0.225）
20 plt.xticks(np.arange(5)+0.2, Cities)21 #添加y轴标签
22 plt.ylabel('亿万资产家庭数')23 #添加图形标题
24 plt.title('近两年5个城市亿万资产家庭数比较')25 #添加图例
26 plt.legend()27 #显示图形
28 plt.show()

二、
①
1 #Pandas模块之垂直或水平条形图
2 #读入数据
3 GDP = pd.read_excel('Province GDP 2017.xlsx')4 #绘图（此时的数据集在前文已经按各省GDP做过升序处理）
5 GDP.GDP.plot(kind = 'bar', width = 0.8, rot = 0, color = 'steelblue', title = '2017年度6个省份GDP分布')6 #添加y轴标签
7 plt.ylabel('GDP（万亿）')8 #添加x轴刻度标签
9 plt.xticks(range(len(GDP.Province)), #指定刻度标签的位置
10 GDP.Province #指出具体的刻度标签值
11 )12 #为每个条形图添加数值标签
13 for x,y inenumerate(GDP.GDP):14 plt.text(x-0.1,y+0.2,'%s' %round(y,1),va='center')15 #显示图形
16 plt.show()

②
1 #Pandas模块之水平交错条形图
2 HuRun = pd.read_excel('HuRun.xlsx')3 HuRun_reshape = HuRun.pivot_table(index = 'City', columns='Year', values='Counts').reset_index()4 #对数据集降序排序
5 HuRun_reshape.sort_values(by = 2016, ascending = False, inplace =True)6 HuRun_reshape.plot(x = 'City', y = [2016,2017], kind = 'bar', color = ['steelblue', 'indianred'],7 rot = 0, #用于旋转x轴刻度标签的角度，0表示水平显示刻度标签
8 width = 0.8, title = '近两年5个城市亿万资产家庭数比较')9 #添加y轴标签
10 plt.ylabel('亿万资产家庭数')11 plt.xlabel('')12 plt.show()

③
1 #seaborn模块之垂直或水平条形图
2 #导入第三方模块
3 importseaborn as sns4
5 #读入数据
6 GDP = pd.read_excel('Province GDP 2017.xlsx')7 sns.barplot(y = 'Province', #指定条形图x轴的数据
8 x = 'GDP', #指定条形图y轴的数据
9 data = GDP, #指定需要绘图的数据集
10 color = 'steelblue', #指定条形图的填充色
11 orient = 'horizontal' #将条形图水平显示
12 )13 #重新设置x轴和y轴的标签
14 plt.xlabel('GDP（万亿）')15 plt.ylabel('')16 #添加图形的标题
17 plt.title('2017年度6个省份GDP分布')18 #为每个条形图添加数值标签
19 for y,x inenumerate(GDP.GDP):20 plt.text(x,y,'%s' %round(x,1),va='center')21 #显示图形
22 plt.show()

④
1 #读入数据
4 sns.barplot(x = 'Pclass', #指定x轴数据
5 y = 'Age', #指定y轴数据
6 hue = 'Sex', #指定分组数据
7 data = Titanic, #指定绘图数据集
8 palette = 'RdBu', #指定男女性别的不同颜色
9 errcolor = 'blue', #指定误差棒的颜色
10 errwidth=2, #指定误差棒的线宽
11 saturation = 1, #指定颜色的透明度，这里设置为无透明度
12 capsize = 0.05 #指定误差棒两端线条的宽度
13 )14 #添加图形标题
15 plt.title('各船舱等级中男女乘客的年龄差异')16 #显示图形
17 plt.show()


展开全文
• 默认为center color 每个条形的填充颜色 edgecolor 每个条形的边框颜色 注意：如果要在一个途图中显示多个条形图，可调整位置align，和宽度width，使并列或重叠显示 3.2条形图示例 import matplotlib.pyplot as plt ...
• 1.首先要绘制一个简单的条形图import numpy as npimport matplotlib.pyplot as pltfrom matplotlib import mlabfrom matplotlib import rcParamsfig1 = plt.figure(2)rects =plt.bar(left = (0.2,1),height = (1,0.5...
• 本文实例为大家分享了python绘制水平条形图的具体代码，供大家参考，具体内容如下 水平条形图与绘制柱状图类似，大家可以先看看我之前写的博客，如何绘制柱状图 水平条形图需要在Bar函数中设置orientation= ‘h’ ...
• 让你彻底掌握在python中绘制条形图
• 1.首先要绘制一个简单的条形图import numpy as npimport matplotlib.pyplot as pltfrom matplotlib import mlabfrom matplotlib import rcParamsfig1 = plt.figure(2)rects =plt.bar(left = (0.2,1),height = (1,0.5...
• 首先，条形图是用条形的长度表示各类别频数的多少，其宽度（表示类别）则是固定的； 直方图是用面积表示各组频数的多少，矩形的高度表示每一组的频数或频率，宽度则表示各组的组距，因此其高度与宽度均有意义。 ...
• ## Python | 分组条形图

千次阅读 2020-07-31 00:56:20
此外，我们将更改条形的颜色和宽度，以清楚地了解分组条形图的用法。 Syntax: 句法： plt.bar(x - width/2, math_means, width, label='Mathematics') plt.bar(x + width/2, science_means, width, label='Science'...
• Syntax: 句法： matplotlib.bar(people, performance, yerr=error, ecolor='r') Reference: https://matplotlib.org/ 参考： https : //matplotlib.org/ 条形图中错误条的Python代码 (Python code for error bar in...
• 条形图 ''' import matplotlib.pyplot as plt #使用ggplot样式来模拟ggplot2风格的图形，ggplot2是一个常用的R语言绘图包 plt.style.use('ggplot') customers = ['ABC','DEF','GHI','JKL','MNO'] custo...
• 应用matplotlib模块绘制条形图，需要调用bar函数，关于该函数的语法和参数含义如下： bar(x, height, width=0.8, bottom=None, color=None, edgecolor=None, linewidth=None, tick_label=None, xerr=None, yerr=...
• 写专利用的python里面的matplotlib画的条形图 ，最开始用的三种颜色来区分，如下图： 然而被告知不行，只能用黑白的，其他颜色不能用，于是想到用灰度，如下图： 然而又被告知，不行，不能用灰度，只能用条形框的...
• 一、条形图绘制参数详解1、bar(left, height, width=0.8, bottom=None, color=None, edgecolor=None, linewidth=None, tick_label=None, xerr=None, yerr=None, label = None, ecolor=None, align, log=False, **...
• 1)标准条形图 (1) Standard Bar Graph) Syntax: 句法： plt.barh(x, y) x - names/numeric distribution x-名称/数字分布 y - length of the bar y-钢筋的长度 2)具有颜色变化的水平条形图(黄色) (2) Horizontal ...
• Matplotlib是一个Python 2D绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形。...我们先来看条形图条形图import matplotlib.pyplot as pltplt.bar([1,3,5,7,9],[5,2,7,8,2...
• 这里我们主要讨论下python中使用matplotlib画条形图的类型。 一、条形图的基本元素 垂直条形图： matplotlib.pyplot.bar（x，height，width = 0.8，bottom = None，*，align =‘center’，data = None，** kwargs ）...
• python中的matplotlib绘制动态条形图
• 以下展示一些用 matplotlib 画条形图、折线图、饼图以及散点图的示例，其中类似于图例、坐标轴名称，标题等的显示方法是一样的，不另做介绍。 0、引入模块 import random import matplotlib.pyplot as plt import ...
• 2、直方 import numpy as np x=np.linspace(0,5,5) y=np.random.randint(0,20,size=5) axes=plt.subplot(2,2,1) axes.bar(x,y,color='b') axes1=plt.subplot(2,2,2) axes1.barh(x,y,color='r') axes2=plt....
• 用来正常显示负号 plt.xticks(rotation= 90) #sn.barplot(tmp3['movie_name'],tmp3['movie_sale'],palette="Set3",ax = axes[0]) sn.barplot(tmp3['movie_name'],tmp3['movie_sale'],palette="Set2") #palette调颜色,...
• ## 使用Python画动态条形图

千次阅读 热门讨论 2020-07-15 19:37:06
2020),interval=500) #interval越大速度越慢 #保存到jshtml HTML(animator.to_jshtml()) 结果如下： 当然，也可以不使用Python，目前很多网站都能实现这一目标，以下就是我在某网站上制作的动态条形图

...

python 订阅